From: Yafang Shao <laoar.shao@gmail.com>
To: ast@kernel.org, daniel@iogearbox.net, john.fastabend@gmail.com,
andrii@kernel.org, martin.lau@linux.dev, song@kernel.org,
yonghong.song@linux.dev, kpsingh@kernel.org, sdf@google.com,
haoluo@google.com, jolsa@kernel.org, tj@kernel.org,
lizefan.x@bytedance.com, hannes@cmpxchg.org
Cc: bpf@vger.kernel.org, cgroups@vger.kernel.org,
Yafang Shao <laoar.shao@gmail.com>
Subject: [PATCH bpf-next 0/4] bpf: Add bpf_iter_cpumask
Date: Fri, 22 Dec 2023 11:30:58 +0000 [thread overview]
Message-ID: <20231222113102.4148-1-laoar.shao@gmail.com> (raw)
Three new kfuncs, namely bpf_iter_cpumask_{new,next,destroy}, have been
added for the new bpf_iter_cpumask functionality. These kfuncs enable the
iteration of percpu data, such as runqueues, psi_group_cpu, and more.
Additionally, a new kfunc, bpf_cpumask_set_from_pid, has been introduced to
specify the cpumask for iteration. This function retrieves the cpumask from
a specific task, facilitating the iteration of percpu data associated with
these CPUs.
In our specific use case, we leverage the cgroup iterator to traverse
percpu data, subsequently exposing it to userspace through a seq file.
Refer to the test cases in patch #4 for further context and examples.
Moreover, this patchset incorporates a change in the cgroup subsystem,
ensuring consistent access to PSI for all cgroups via the struct cgroup.
Changes:
- bpf: Add new bpf helper bpf_for_each_cpu
https://lwn.net/ml/bpf/20230801142912.55078-1-laoar.shao@gmail.com/
Yafang Shao (4):
cgroup, psi: Init PSI of root cgroup to psi_system
bpf: Add bpf_iter_cpumask kfuncs
bpf: Add new kfunc bpf_cpumask_set_from_pid
selftests/bpf: Add selftests for cpumask iter
include/linux/psi.h | 2 +-
kernel/bpf/cpumask.c | 65 ++++++++++
kernel/cgroup/cgroup.c | 5 +-
.../selftests/bpf/prog_tests/cpumask_iter.c | 132 +++++++++++++++++++++
tools/testing/selftests/bpf/progs/cpumask_common.h | 4 +
.../selftests/bpf/progs/test_cpumask_iter.c | 50 ++++++++
6 files changed, 256 insertions(+), 2 deletions(-)
create mode 100644 tools/testing/selftests/bpf/prog_tests/cpumask_iter.c
create mode 100644 tools/testing/selftests/bpf/progs/test_cpumask_iter.c
--
1.8.3.1
next reply other threads:[~2023-12-22 11:31 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-22 11:30 Yafang Shao [this message]
2023-12-22 11:30 ` [PATCH bpf-next 1/4] cgroup, psi: Init PSI of root cgroup to psi_system Yafang Shao
2023-12-22 17:47 ` Tejun Heo
2023-12-24 3:14 ` Yafang Shao
2023-12-22 23:49 ` kernel test robot
2023-12-23 7:26 ` kernel test robot
2023-12-22 11:31 ` [PATCH bpf-next 2/4] bpf: Add bpf_iter_cpumask kfuncs Yafang Shao
2024-01-02 22:13 ` Andrii Nakryiko
2024-01-04 2:30 ` Yafang Shao
2023-12-22 11:31 ` [PATCH bpf-next 3/4] bpf: Add new kfunc bpf_cpumask_set_from_pid Yafang Shao
2023-12-22 17:51 ` Tejun Heo
2023-12-24 3:05 ` Yafang Shao
2023-12-22 11:31 ` [PATCH bpf-next 4/4] selftests/bpf: Add selftests for cpumask iter Yafang Shao
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231222113102.4148-1-laoar.shao@gmail.com \
--to=laoar.shao@gmail.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=cgroups@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=hannes@cmpxchg.org \
--cc=haoluo@google.com \
--cc=john.fastabend@gmail.com \
--cc=jolsa@kernel.org \
--cc=kpsingh@kernel.org \
--cc=lizefan.x@bytedance.com \
--cc=martin.lau@linux.dev \
--cc=sdf@google.com \
--cc=song@kernel.org \
--cc=tj@kernel.org \
--cc=yonghong.song@linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).