[PATCHSET sched_ext/for-6.12] sched_ext: Add cgroup support

From: Tejun Heo
Date: Wed Aug 07 2024 - 20:26:05 EST


This patchset is the cgroup integration part of the sched_ext v6 patchset:

http://lkml.kernel.org/r/20240501151312.635565-1-tj@xxxxxxxxxx

This patchset is on top of sched_ext/for-6.12 (2c390dda9e03 ("sched_ext:
Make task_can_run_on_remote_rq() use common task_allowed_on_cpu()")) and
contains the following patches:

0001-cgroup-Implement-cgroup_show_cftypes.patch
0002-sched-Expose-css_tg.patch
0003-sched-Enumerate-CPU-cgroup-file-types.patch
0004-sched-Make-cpu_shares_read_u64-use-tg_weight.patch
0005-sched-Introduce-CONFIG_GROUP_SCHED_WEIGHT.patch
0006-sched_ext-Add-cgroup-support.patch
0007-sched_ext-Add-a-cgroup-scheduler-which-uses-flattene.patch

0001 implements cgroup_show_cftype() so that SCX schedulers can only show
cgroup knobs that it implements.

0002-0005 are sched core preparations. Should be pretty straightforward. No
functional changes.

0006 adds cgroup support to sched_ext.

0007 implements an example scheduler which uses the cgroup support.

The patchset is also available in the following git branch:

git://git.kernel.org/pub/scm/linux/kernel/git/tj/sched_ext.git scx-cgroup

diffstat follows. Thanks.

include/linux/cgroup-defs.h | 8
include/linux/cgroup.h | 1
include/linux/sched/ext.h | 3
init/Kconfig | 10
kernel/cgroup/cgroup.c | 97 ++++
kernel/sched/core.c | 115 +++--
kernel/sched/ext.c | 522 ++++++++++++++++++++++++-
kernel/sched/ext.h | 20
kernel/sched/sched.h | 35 +
tools/sched_ext/Makefile | 2
tools/sched_ext/README.md | 12
tools/sched_ext/include/scx/common.bpf.h | 1
tools/sched_ext/scx_flatcg.bpf.c | 949 ++++++++++++++++++++++++++++++++++++++++++++++
tools/sched_ext/scx_flatcg.c | 233 +++++++++++
tools/sched_ext/scx_flatcg.h | 51 ++
tools/testing/selftests/sched_ext/maximal.bpf.c | 32 +
16 files changed, 2035 insertions(+), 56 deletions(-)

--
tejun