[PATCH v5 0/2] Fix nohz_full vs cfs bandwidth

Phil Auld
2023-07-07T19:58:47Z

This is v5 of patch 2/2 which is adding code to prevent
the tick from being stopped when the single running task
has bandwidth limits. Discussions had led to the idea of
adding a bit to task_struct to help make this decision.

There was some complexity with doing it in the task which
is avoided by using something in the cfs_rq. Looking
into that lead me to the hierarchical_quota field in the
cfs_bandwith struct. We spend a good deal of effort
updating (or trying to, see patch 1/2) that value for
the whole task_group tree when a quota is set/changed.

This new version first fixes that value to be meaningful
for cgroupv2 and then leverages it to make the decisions
about blocking the tick_stop.

Phil Auld (2):
sched, cgroup: Restore meaning to hierarchical_quota
Sched/fair: Block nohz tick_stop when cfs bandwidth in use

kernel/sched/core.c | 23 ++++++++++++++---
kernel/sched/fair.c | 56 ++++++++++++++++++++++++++++++++++++++---
kernel/sched/features.h | 2 ++
kernel/sched/sched.h | 3 ++-
4 files changed, 76 insertions(+), 8 deletions(-)

--
2.31.1