v1
2026-08-06
MGLRU 用 PUD 级 Bloom filter 跳空子树 · v1
为 MGLRU 增加 PUD 级 Bloom 过滤器,跨节点空扫描时跳过整 1GB 区域,减少无谓 PMD 遍历。
原始补丁链接
子 Patch(5)
1/5
mm/mglru: add PUD-level Bloom filter state
Add a second, coarser pair of double-buffered Bloom filters to struct lru_gen_mm_state. Like the PMD-level filters, they flip each generation, but they operate at 1GB (PUD) granularity so the page tab
2/5
mm/mglru: refactor Bloom filter helpers for two filter levels
Split test/update/reset_bloom_filter() into __ prefixed helpers that operate on a generic filters array, and thin wrappers that pass the PMD-level mm_state->filters. This lets a second, coarser (PUD-l
3/5
mm/mglru: skip empty PUD subtrees during aging
The aging walk descends every present PUD and iterates all 512 of its PMDs, testing the PMD-level Bloom filter on each. For a process whose memory lives only on other NUMA nodes, every PUD of this lru
4/5
mm/mglru: report hot PUDs from the rmap feedback path
lru_gen_look_around() marks the PMD of a young PTE found during the eviction rmap walk, feeding hot regions back to the aging walker. With the PUD-level filter in place, that PMD marking alone is not
5/5
mm/mglru: add MM_WALK_EMPTY stats and tracepoint for cross-node measurement
Add infrastructure to quantify cross-node empty page table walks in the MGLRU aging path - walks that traverse an mm’s page tables but find no folio belonging to the current lruvec (node+memcg). These