[PATCH 0/2] Fix nohz_full vs rt bandwidth

From: Hao Jia
Date: Mon Aug 21 2023 - 05:50:08 EST


Since the commit 88c56cfeaec4 ("sched/fair: Block nohz tick_stop
when cfs bandwidth in use") was merged, it handles conflicts between
NOHZ full and cfs_bandwidth well, and the scheduler feature HZ_BW
allows us to choose which one to prefer.

This conflict also exists between NOHZ full and rt_bandwidth,
these two patches try to handle it in a similar way.

patch1: Extracts a can_stop_tick() callback function for each
sched_class from sched_can_stop_tick(), it will make things clearer
and also convenient to handle the conflict between NOHZ full
and rt_bandwidth.

patch2: If the HZ_BW scheduler feature is enabled, and the RT task
to be run is constrained by rt_bandwidth runtime. Then it will
prevent NO_HZ full from stopping tick.

Hao Jia (2):
sched/core: Introduce sched_class::can_stop_tick()
sched/rt: Block nohz tick_stop when rt bandwidth in use

kernel/sched/core.c | 67 +++++--------------------------
kernel/sched/deadline.c | 16 ++++++++
kernel/sched/fair.c | 56 +++++++++++++++++++++++---
kernel/sched/rt.c | 89 ++++++++++++++++++++++++++++++++++++++++-
kernel/sched/sched.h | 5 ++-
5 files changed, 168 insertions(+), 65 deletions(-)

--
2.39.2