linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/7] sched/fair|isolation: Correctly clear nohz.[nr_cpus|idle_cpus_mask] for isolated CPUs
@ 2024-04-03 15:05 Pierre Gondois
  2024-04-03 15:05 ` [PATCH 1/7] sched/isolation: Introduce housekeeping_runtime isolation Pierre Gondois
                   ` (7 more replies)
  0 siblings, 8 replies; 14+ messages in thread
From: Pierre Gondois @ 2024-04-03 15:05 UTC (permalink / raw)
  To: linux-kernel
  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

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


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2024-04-09 13:33 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-04-03 15:05 [PATCH 0/7] sched/fair|isolation: Correctly clear nohz.[nr_cpus|idle_cpus_mask] for isolated CPUs Pierre Gondois
2024-04-03 15:05 ` [PATCH 1/7] sched/isolation: Introduce housekeeping_runtime isolation Pierre Gondois
2024-04-03 15:05 ` [PATCH 2/7] sched/isolation: Move HK_TYPE_SCHED to housekeeping runtime Pierre Gondois
2024-04-03 15:05 ` [PATCH 3/7] sched/isolation: Use HKR_TYPE_SCHED in find_new_ilb() Pierre Gondois
2024-04-03 15:05 ` [PATCH 4/7] sched/fair: Move/add on_null_domain()/housekeeping_cpu() checks Pierre Gondois
2024-04-03 15:05 ` [PATCH 5/7] sched/topology: Remove CPUs with NULL sd from HKR_TYPE_SCHED mask Pierre Gondois
2024-04-03 15:05 ` [PATCH 6/7] sched/fair: Remove on_null_domain() and redundant checks Pierre Gondois
2024-04-04  7:27   ` Peter Zijlstra
2024-04-05  9:48     ` Pierre Gondois
2024-04-03 15:05 ` [PATCH 7/7] sched/fair: Clear idle_cpus_mask for CPUs with NULL sd Pierre Gondois
2024-04-04  3:01 ` [PATCH 0/7] sched/fair|isolation: Correctly clear nohz.[nr_cpus|idle_cpus_mask] for isolated CPUs Waiman Long
2024-04-04 12:55   ` Pierre Gondois
2024-04-05  0:23     ` Waiman Long
2024-04-09 13:33       ` Pierre Gondois

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).