v1
2026-10-09
page_owner 增加 bpf_iter 与 kfunc · v1
page_owner 新增 BPF iterator 与 kfunc,导出 NUMA、memcg 路径和栈信息,支持 eBPF 内核内过滤聚合。
原始补丁链接
子 Patch(6)
1/6
mm/page_owner: extract page_owner_next_eligible() from read loop
[mm/page_owner: extract page_owner_next_eligible() from read loop] Move the page scanning logic out of read_page_owner() into a dedicated helper, in preparation for using it in the page_owner bpf_iter
2/6
mm/page_owner: add bpf_iter target "page_owner"
[mm/page_owner: add bpf_iter target “page_owner”] Register a bpf_iter target “page_owner” that walks the pages eligible for page_owner output, with the same eligibility rules as the /sys/kernel/debug/
3/6
mm/page_owner: add open-coded page_owner iterator
Add an open-coded bpf_iter over the pages eligible for page_owner output, reusing page_owner_next_eligible(). A sleepable BPF program drives it with bpf_iter_page_owner_new()/next()/destroy(); each n
4/6
mm/page_owner: add bpf_page_owner_get_nid() kfunc
Extract the NUMA node lookup from read_page_owner() into a shared page_owner_get_nid() helper, and expose it to BPF programs as bpf_page_owner_get_nid(). The nid bitfield layout is build-time configu
5/6
mm/page_owner: add bpf_page_owner_get_memcg_info() kfunc
Expose per-page memcg information to BPF programs, so that a bpf_iter over page_owner can aggregate and filter allocations by memcg. Attributing an allocation to a specific cgroup needs its full cgrou
6/6
selftests/bpf: add tests for the page_owner bpf_iter target
Add a sleepable BPF program and a userspace runner covering the seq_file and open-coded page_owner iterators and the get_nid, stack_snprint and get_memcg_info kfuncs. The test checks: - seq_file wa