目录标题
- 1️⃣ `zone_reclaim_mode` 的作用
- 2️⃣ 和 NUMA 的关系
- 3️⃣ 实际场景
1️⃣zone_reclaim_mode的作用
/proc/sys/vm/zone_reclaim_mode是 Linux 内核里一个和内存分配策略相关的参数:
作用:控制在NUMA 系统上,如果一个内存区域(zone)空闲内存不足时,内核是否先尝试从本 NUMA 节点以外的节点回收内存。
取值:
0:关闭 zone reclaim,即不优先回收本地节点内存。1:启用 zone reclaim,本地节点内存不足时,先尝试回收本地内存。其他值:可以组合控制 slab/page reclaim、页缓存回收等。
💡 简单理解:开启 zone reclaim 会优先使用本地 NUMA 节点的内存,关闭则允许跨节点分配。
2️⃣ 和 NUMA 的关系
- 强关系:这个参数只在多 NUMA 节点的系统上有意义。
- 单节点系统(单 CPU 或非 NUMA 系统)设置这个值基本没作用,因为内存都在同一个节点。
所以你这个操作:
echo0|sudotee/proc/sys/vm/zone_reclaim_mode✅ 是关闭 zone reclaim,间接就是减少 NUMA 本地内存回收策略对内核调度的影响,让内核在本地内存不足时可以跨节点分配内存。
3️⃣ 实际场景
- 对数据库、大内存应用,如果开启 zone reclaim,可能导致CPU cache miss或进程阻塞等待本地内存回收。
- 关闭 zone reclaim(即
0)通常是高性能 NUMA 系统优化的推荐做法,尤其在 Oracle、Postgres、Redis 等内存敏感应用场景下。
总结:
| 参数 | 含义 | NUMA 相关 |
|---|---|---|
zone_reclaim_mode = 0 | 关闭 zone reclaim | 与 NUMA 相关,关闭后允许跨节点分配内存 |
zone_reclaim_mode = 1 | 开启 zone reclaim | NUMA 系统会优先使用本地节点内存 |