v3 2026-09-08

page_owner增加过滤功能 · v3

为 page_owner 增加 PID/TGID/COMM 与 cgroup 过滤,重构 memcg 处理,并更新工具和文档。

原始补丁链接

子 Patch(8)

1/8
mm/page_owner: Add PID filtering support
为 page_owner 增加按 PID 过滤:解析 pid=<pid_list>(≤16 个)并排序,遍历页时二分匹配,只输出命中的分配记录。
2/8
mm/page_owner: Add TGID filtering support
为 page_owner 增加按 TGID 过滤:复用 PID 的解析和二分查找机制,单列 tgid 列表/计数,允许用 tgid= 筛选同一线程组页面。
3/8
mm/page_owner: Add COMM filtering with wildcard support
page_owner 的 comm= 支持 glob 通配符匹配进程名,并让 PAGE_OWNER select GLOB 以链接 lib/glob.c 的 glob_match(),避免未定义引用。
4/8
mm/page_owner: Refactor memcg handling for cgroup filter support
将 page_owner 打印时收集 memcg 的逻辑重构为 struct memcg_info,供展示与后续过滤复用;纯重构,不改变输出行为。
5/8
mm/page_owner: Add memcg filter support
为 page_owner 增加 memcg= 过滤:用 cgroup_path() 取每页 cgroup 路径并与过滤串 strcmp,不匹配跳过;缓冲在 read() 外分配一次避免在 RCU 临界区睡眠。
6/8
tools/mm: Add PID/TGID/COMM filtering support to page_owner_filter
给 tools/mm/page_owner_filter 增加 -p/–pid、-t/–tgid、-c/–comm 过滤选项,支持逗号列表和通配符;空参数会报错。
7/8
tools/mm: Add memory cgroup filtering support to page_owner_filter
给 tools/mm/page_owner_filter 增加 -g/–cgroup 路径过滤(如 -g / 或 /user.slice),只输出匹配 cgroup 的页;空 -g 参数报错。
8/8
Documentation: page_owner: Document PID/TGID/COMM and cgroup filters
更新 page_owner.rst,补充 page_owner_filter 的 PID/TGID/COMM(含通配符)与 cgroup 过滤器用法、示例和数量限制。