v2 2026-09-09

page_owner增加过滤功能 · v2

page_owner 新增 PID/TGID/COMM 通配符和 memcg 过滤;评审在讨论这些过滤选项的实际必要性。

原始补丁链接

子 Patch(8)

1/8
mm/page_owner: Add PID filtering support
page_owner 新增 pid= 过滤:最多 16 个 PID,解析后排序存储;遍历输出时二分查找匹配,避免逐页线性扫描。
2/8
mm/page_owner: Add TGID filtering support
page_owner 新增 tgid= 过滤:复用 PID 的解析与二分查找基础,单独维护 tgid 列表和计数,按线程组过滤输出。
3/8
mm/page_owner: Add COMM filtering with wildcard support
page_owner 新增 comm= 过滤,支持 */?/[] 通配符;匹配用 lib/glob.c 的 glob_match(),因此 PAGE_OWNER 需 select GLOB 避免链接错误。
4/8
mm/page_owner: Refactor memcg handling for cgroup filter support
把 memcg 信息获取从打印逻辑中抽成 struct memcg_info,供显示和后续 cgroup 过滤复用;重构不改变输出行为。
5/8
mm/page_owner: Add memcg filter support
page_owner 支持 memcg= 过滤:用 cgroup_path() 收集路径,遍历时 strcmp 比较并跳过不匹配页;路径缓冲在 read() 外分配,避免 RCU 临界区里 GFP_KERNEL 睡眠。
6/8
tools/mm: Add PID/TGID/COMM filtering support to page_owner_filter
tools/mm/page_owner_filter 增加 -p/-t/-c 选项,分别解析 PID/TGID/COMM 过滤列表,支持通配符并组合使用;空参数会报错。
7/8
tools/mm: Add memory cgroup filtering support to page_owner_filter
tools/mm/page_owner_filter 增加 -g cgroup_path 过滤,能按 /user.slice 等 memcg 路径筛选输出;空 -g 参数打印错误。
8/8
Documentation: page_owner: Document PID/TGID/COMM and cgroup filters
更新 page_owner.rst,说明 page_owner_filter 的 PID/TGID/COMM 通配符和 cgroup 路径过滤用法、示例及数量限制。