[PATCH 0/2] cgroup, sched: add bpf for cgroup cpu controller
From: Ziyang Men
Date: Thu Aug 13 2026 - 15:00:20 EST
As the title suggests, this series adds bpf kfuncs for the cgroup CPU
controller.
Motivation:
Collecting cgroup statistics is expensive: the existing
method is to open and parse a cgroup file. memcg already has an
efficient alternative through BPF; this series extends that idea to cpu.
Design:
- Leave reading the CFS bandwidth counters to the BPF program. They are
plain fields of tg->cfs_bandwidth, so they need no kernel code.
- Add one kfunc to compute the throttled time. This is necessary because
it is a sum over every possible cpu, which a user cannot do itself.
The only part it touches the scheduler part is to discard the static for
throttled_time_self() in order to use externally.
Patch 1 adds the kfuncs (kernel/cgroup/bpf_cpu.c); patch 2 adds a
test_progs selftest.
Tested on VM with v7.2-rc5.
Ziyang Men (2):
cgroup, sched: add BPF kfuncs to read a cpu cgroup's stats
selftests/bpf: add cgroup_iter_cpu test for cpu cgroup kfuncs
include/linux/cgroup.h | 15 +
kernel/cgroup/Makefile | 2 +
kernel/cgroup/bpf_cpu.c | 80 ++++++
kernel/cgroup/cgroup-internal.h | 3 +
kernel/cgroup/rstat.c | 42 +++
kernel/sched/core.c | 2 +-
tools/testing/selftests/bpf/cgroup_iter_cpu.h | 22 ++
tools/testing/selftests/bpf/config | 3 +
.../bpf/prog_tests/cgroup_iter_cpu.c | 259 ++++++++++++++++++
.../selftests/bpf/progs/cgroup_iter_cpu.c | 53 ++++
10 files changed, 480 insertions(+), 1 deletion(-)
create mode 100644 kernel/cgroup/bpf_cpu.c
create mode 100644 tools/testing/selftests/bpf/cgroup_iter_cpu.h
create mode 100644 tools/testing/selftests/bpf/prog_tests/cgroup_iter_cpu.c
create mode 100644 tools/testing/selftests/bpf/progs/cgroup_iter_cpu.c
--
2.53.0-Meta