问题现象
NUMA 参数 zone_reclaim_mode 在设置为 1 时,内核将要求多路 CPU 尽量从距离 较近的系统内存节点(服务器的整体内存在 numa 架构下将被分成若干个节点)分 配内存而不是在整个服务器可访问内存的范围内进行内存分配,因此在较高内存占 用压力下内存申请会触发内存频繁回收整理的机制严重影响了系统整体性能(长期 处于内核态 sys 很高)。
另 外还会 发生部 分 SQL 夯住,从 dmesg 日志 的堆栈 信息中 表现为出 现kmem_zone_alloc 调用。
处理步骤 NUMA 参数关闭。
判断是否开启:cat /proc/sys/vm/zone_reclaim_mode 0:关闭,1:开启 查看各 cpu 间的 distance:numactl --hardware 如各 CPU 的 distance > 20 (通讯耗时),则建议开启 NUMA 参数。
关闭方式: 1) vim /etc/sysctl.conf 添加 vm.zone_reclaim_mode=0 并执行 sysctl –p 2) sysctl -w vm.zone_reclaim_mode=0