v1
2026-08-05
限制kvmalloc的kmalloc分配阶 · v1
允许限制kvmalloc()调用kmalloc()时尝试的分配阶,避免高次物理连续分配带来的碎片化与后台回收压缩开销。
原始补丁链接
子 Patch(3)
1/3
mm/slub: allow capping the order kvmalloc() uses for kmalloc()
为 kvmalloc() 新增 kmalloc 阶数上限(如 kvmalloc_max_contig_order),超限直接转 vmalloc,避免高阶页分配引发 zone lock、页块分裂、唤醒 kswapd/kcompactd 做无效高阶工作。
2/3
mm/slub: count kvmalloc() allocations forced to vmalloc()
新增 /proc/vmstat 的 kvmalloc_forced_vmalloc 计数,统计因 kvmalloc 阶数上限而跳过 kmalloc 转 vmalloc 的分配次数,便于评估阈值效果;超 KMALLOC_MAX_SIZE 不计。
3/3
mm/slub: add KUnit coverage for the kvmalloc order limit
为 kvmalloc 阶数上限新增 KUnit 测试,用 is_vmalloc_addr() 验证超限请求转 vmalloc,覆盖边界、默认值、超 KMALLOC_MAX_SIZE 等场景,并直接操作 sysctl 变量。