v1 2026-11-03

DAMON监控精度与开销优化 · v1

对齐MMU notifier范围清PTE/PMD young位、避免32位下DAMON_STAT空闲百分位溢出,并去掉DAMOS_MIGRATE多余的folio LRU隔离。

原始补丁链接

子 Patch(9)

1/9
mm/damon/core: remove unnecessary zero-initialization in damon_new_ctx()
damon_new_ctx 的 kzalloc 已清零,且 kdamond_init_ctx 会初始化 sampling/aggregation/ops 更新间隔,删除三项冗余赋值。
2/9
mm/damon/ops-common: align MMU notifier range when clearing PTE young bit
damon_ptep_mkold 对未对齐采样地址清 PTE young bit 时,notifier 范围会侵入下一页;先将 addr 按页对齐,使 PTE 操作与 KVM 老化范围一致。
3/9
mm/damon/ops-common: align MMU notifier range when clearing PMD young bit
damon_pmdp_mkold 清 PMD young bit 时 notifier 范围用未对齐 addr,可能漏大半页并误老化下一大页;将 addr 按 HPAGE_PMD_MASK 对齐。
4/9
mm/damon/stat: avoid 32-bit overflow in idle percentiles
DAMON stat 的 idle 百分位在 32 位上因 accounted_bytes*100 溢出;改为先转 u64 并用 div64_ul 除法,且每 region 只计算一次百分比。
5/9
mm/damon/{p,v}addr: skip folios already on the migration target node
DAMON paddr/vaddr 的 target_nid 路径会隔离已在目标节点的 folios 再放回;隔离前跳过它们,避免无效迁移开销,与 vaddr 显式目标路径一致。
6/9
selftests/damon/sysfs.py: stop obsolete_target shells hanging the test
obsolete_target 测试用 subprocess 启 sh 时继承终端 stdin,后台进程组触发 SIGTTIN 导致卡死;改为 stdin=subprocess.PIPE,使 sh 读不到输入而保持空闲。
7/9
mm/damon/reclaim: fix typo and grammar
修正 DAMON_RECLAIM 源码注释/文档字符串中 DAMON_RCLAIM 拼写及 set as -> set to;仅注释文字改动,无功能影响。
8/9
Docs/admin-guide/mm/damon/lru_sort: fix grammar and stlye
修正 DAMON_LRU_SORT 文档时态、拆分长句、set as 改 set to、[] 改 (),提升可读性与风格一致性;仅文档改动。
9/9
Docs/admin-guide/mm/damon/reclaim: document how to disable watermarks
在 DAMON_RECLAIM 文档说明通过调整 wmarks_low/wmarks_mid 可让 scheme 在空闲内存充足时仍回收冷页,补充现有水位参数用法。