iLeLe 2018-3-23 11:37作者

数据库服务器一定要关闭NUMA参数

字数 3187 阅读 953 评论 0 赞 2
x86架构下的数据库服务器,包括GBase8a集群服务器,需要关闭NUMA参数(vm.zone_reclaim_mode)。
NUMA(Non-Uniform Memory Access)架构是为了解决多CPU下内存访问冲突,简单来说不在将整个物理内存作为一个整体,而是根据不同的CPU区分不同的内存块儿,如2颗CPU每颗CPU使用64G内存。
当NUMA参数zone_reclaim_mode在设置为1时,内核将要求多路CPU尽量从距离较近的系统内存节点(服务器的整体内存在numa架构下将被分成若干个节点)分配内存而不是在整个服务器可访问内存的范围内进行内存分配,因此在较高内存占用压力下内存申请会触发内存频繁回收整理的机制严重影响了系统整体性能(长期处于内核态sys很高)。进而可能导致SQL卡顿问题的发生。

NUMA参数的开关是在系统安装时动态设置的,通过判断各个cpu之间的distance(大概就是通讯耗时)>20 ,就打开NUMA参数,反之就不打开。
通过命令numactl --hardware  可以查看CPU和内存的距离,如下:
 # numactl --hardware  
available: 2 nodes (0-1)
node 0 cpus: 0 2 4 6 8 10 12 14
node 0 size: 57298 MB
node 0 free: 44157 MB
node 1 cpus: 1 3 5 7 9 11 13 15
node 1 size: 57344 MB
node 1 free: 41773 MB
node distances:
node   0   1 
  0:  10  20 
  1:  20  10 

查看NUMA参数是否开启:
cat /proc/sys/vm/zone_reclaim_mode

设置NUMA参数关闭:
A、修改当前系统值
echo 0 > /proc/sys/vm/zone_reclaim_mode
B、修改或新增到配置文件/etc/sysctl.conf
vm.zone_reclaim_mode = 0

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0 条评论

您需要登录后才可以评论 登录 | 立即注册

作者其他文章