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

