Received: by 2002:ab2:1149:0:b0:1f3:1f8c:d0c6 with SMTP id z9csp2770000lqz; Wed, 3 Apr 2024 08:09:33 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCWuNJvrhR8dHqssF/AXX2QuvBoEpBLy8ZtSHW9pFOzRod1mgO2AEMXvaTwgN1wJ+WExLoeWZynrfFD/cieYT6IH4l89ZqqGtI+2xXsSkg== X-Google-Smtp-Source: AGHT+IEUmcbZ3XM6mIceOAvNNjwFtgQ4IbRnRWEazGFRQoYL1FV/oRVy18of1h7dgnxXDFpDqGVm X-Received: by 2002:a17:902:e849:b0:1e2:7879:8be8 with SMTP id t9-20020a170902e84900b001e278798be8mr3455966plg.58.1712156973655; Wed, 03 Apr 2024 08:09:33 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1712156973; cv=pass; d=google.com; s=arc-20160816; b=tcIEBtlLDCgQpqUwDm+3TKrQgXdQAPGedlUA6jISY9rZ2VeQgKYR4tmSUx461/C3P1 2T7qW8J3XFcLs+btiPbpbMe5tONXv0dDBS+VwaAwYolYx89GBbe1EntHbqUCsmJZ/w2T GQRfLj+8FY4PfYanOJCEqQR066lNBQE+ey+qVdQhRXZYlzjdMKp4NIZ5WTqJWxSsAYlI suvN6O0DnWx56n/yVCmS822fIaZIAcu/plZn30DqXl5Hec0yK+b7Y1nSouIRLShJacj4 5MS1Ap4IUjij5/NZJUhwPKHtYooQ/c41Vw0fe7HL9nZ2aIrG9VcBBG4lAlX2Xj+wBy3b 3bzw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:message-id:date:subject:cc:to :from; bh=96LKt1iFUB3tgT8eNoJXm95JB6p5xB7xJqT0VfPjYH4=; fh=1pD0fnlYqPZJHzR5P6zRjAosRkj/l3seuvIUMp36OoM=; b=NIWv/g4ztQTMM0doeYFjLRvzCW1jtD62bDr6b7np5h5FNB+glOWX4qUgwi8hfjJgpG SY7KElcF8xMIG5STng1aMQeJrJg2M4oPcWoRtPhoWEFFR/fbUreZZ5d6elMwA4DBnznG NytpFadvzyuZrHRpHRx9sEaUcxmB1OjiVeGjaxlQIFcG/sFPWgI6UulDJDckFnAt4jVN mZ1ohrLGAowmXZw5iXMnnu9pT8Mk8BNUFp4qRXCSvIWUiAwH/r6UdEGWzUS3yGD72V+r xhe+qxuprMdf5wANb+5PfdCHMgKgoxyKztQv9soLDgF7xVi811A6fU3u2DoIzzBM+f0b tUUQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1 spf=pass spfdomain=arm.com dmarc=pass fromdomain=arm.com); spf=pass (google.com: domain of linux-kernel+bounces-130031-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-130031-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id lv4-20020a1709032a8400b001e2563469dasi6151396plb.405.2024.04.03.08.09.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Apr 2024 08:09:33 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-130031-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; arc=pass (i=1 spf=pass spfdomain=arm.com dmarc=pass fromdomain=arm.com); spf=pass (google.com: domain of linux-kernel+bounces-130031-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-130031-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id ACA6828DBB7 for ; Wed, 3 Apr 2024 15:06:25 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 7A01014A091; Wed, 3 Apr 2024 15:05:59 +0000 (UTC) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 8096114A088 for ; Wed, 3 Apr 2024 15:05:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712156758; cv=none; b=H79XvuJDLlPJ+YT21m6ayUobekHn72U9SQktoEpboO142aQpPlVjW3M6RU9nMSgkK79qfCWmxs6qcWUlKtLhtiQAW3hKC+fZCyimIJrIK4deGANx+7UT8NrPmpUOMPVJHVXOxX4cl8P4JJ9mYPqOEQRH+a3ZMTZOpie674flpng= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712156758; c=relaxed/simple; bh=W/VsaHnLv+3GqcNp0lotH5qolwDsGkmWsY6JTpP9L98=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=j+25QBMCvKYA7Fh0iMMVGQmspjsA07UF9cElAlxn2JHOsviqeF+DlouZtxvqrCn8689+L2GIOolkHOEfGqer0efgZJWEbMWMk2p7XX1/xMTzq219SpPwkaz2WKNro3ZsdbbLFaLNOFM2FiwClBOU7xn7p+OYmA91sCdrK/uv6ho= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id CA9311007; Wed, 3 Apr 2024 08:06:27 -0700 (PDT) Received: from e126645.arm.com (unknown [10.57.74.15]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 768C83F7B4; Wed, 3 Apr 2024 08:05:52 -0700 (PDT) From: Pierre Gondois To: linux-kernel@vger.kernel.org Cc: Aaron Lu , Rui Zhang , Pierre Gondois , Anna-Maria Behnsen , Frederic Weisbecker , Ingo Molnar , Thomas Gleixner , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Daniel Bristot de Oliveira , Valentin Schneider , Tejun Heo , Waiman Long , Michal Hocko Subject: [PATCH 0/7] sched/fair|isolation: Correctly clear nohz.[nr_cpus|idle_cpus_mask] for isolated CPUs Date: Wed, 3 Apr 2024 17:05:32 +0200 Message-Id: <20240403150543.2793354-1-pierre.gondois@arm.com> X-Mailer: git-send-email 2.25.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Zhang Rui reported that find_new_ilb() was iterating over CPUs in isolated cgroup partitions. This triggered spurious wakeups for theses CPUs. [1] The initial approach was to ignore CPUs on NULL sched domains, as isolated CPUs have a NULL sched domain. However a CPU: - with its tick disabled, so taken into account in nohz.[idle_cpus_mask|nr_cpus] - which is placed in an isolated cgroup partition will never update nohz.[idle_cpus_mask|nr_cpus] again. To avoid that, the following variables should be cleared when a CPU is placed in an isolated cgroup partition: - nohz.idle_cpus_mask - nohz.nr_cpus - rq->nohz_tick_stopped This would allow to avoid considering wrong nohz.* values during idle load balance. As suggested in [2] and to avoid calling nohz_balance_[enter|exit]_idle() from a remote CPU and create concurrency issues, leverage the existing housekeeping HK_TYPE_SCHED mask to reflect isolated CPUs (i.e. on NULL sched domains). Indeed the HK_TYPE_SCHED mask is currently never set by the isolcpus/nohz_full kernel parameters, so it defaults to cpu_online_mask. Plus it's current usage fits CPUs that are isolated and should not take part in load balancing. Making use of HK_TYPE_SCHED for this purpose implies creating a housekeeping mask which can be modified at runtime. [1] https://lore.kernel.org/all/20230804090858.7605-1-rui.zhang@intel.com/ [2] https://lore.kernel.org/all/CAKfTPtAMd_KNKhXXGk5MEibzzQUX3BFkWgxtEW2o8FFTX99DKw@mail.gmail.com/ Pierre Gondois (7): sched/isolation: Introduce housekeeping_runtime isolation sched/isolation: Move HK_TYPE_SCHED to housekeeping runtime sched/isolation: Use HKR_TYPE_SCHED in find_new_ilb() sched/fair: Move/add on_null_domain()/housekeeping_cpu() checks sched/topology: Remove CPUs with NULL sd from HKR_TYPE_SCHED mask sched/fair: Remove on_null_domain() and redundant checks sched/fair: Clear idle_cpus_mask for CPUs with NULL sd include/linux/sched/isolation.h | 30 ++++++++++++++++++++- include/linux/sched/nohz.h | 2 ++ kernel/sched/fair.c | 44 +++++++++++++++++------------- kernel/sched/isolation.c | 48 ++++++++++++++++++++++++++++++++- kernel/sched/topology.c | 7 +++++ 5 files changed, 110 insertions(+), 21 deletions(-) -- 2.25.1