【系统运维】NUMA介绍与关闭方法

tanglu 318 2021-11-27

一、什么是NUMA

在当前主流服务器上,通常是多个CPU协同工作,然后每个CPU可以支持多个物理核。应用程序可以在不同的处理器上运行。比如先在CPU1上运行一段时间,然后再被调度到CPU2上运行,这种被调度到其它CPU上的请求属于远端内存访问,和访问单个CPU相比会增加应用程序的延迟。这种允许多个CPU切换的架构也被称为非统一内存访问架构(Non-Uniform Memory Access,NUMA 架构)。


二、什么时候关闭NUMA

当CPU指标数据里出现较多的context switch时就代表线程进行了大量上下文切换,具体表现就是线程先在CPU 1上运行,之后又切换到CPU 2运行。当 context switch 发生后,服务的运行时信息需要被重新加载到另一个 CPU上。重新加载的过程是需要花费一定时间的,每调度一次,部分请求就会受到运行时信息、指令和数据重新加载过程的影响导致延迟变高。如果使用top命令查看CPU状态发现sys占用较高,也有可能是NUMA导致。


三、查看是否开启NUMA

yum install numactl
numactl --hardware show  #如果available中nodes数量大于1代表numa是开启的


企业微信截图_20210930095927.png


四、关闭NUMA

· 方法1:通过BIOS关闭NUMA

· 方法2:通过配置文件修改

vim /etc/default/grub
GRUB_CMDLINE_LINUX增加numa=off


五、校验

cat /proc/cmdline 
BOOT_IMAGE=/vmlinuz-3.10.0-327.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet.UTF-8


版权声明
本站所有文章均为原创,转载请注明出处!小站维护不易,如果对您有所帮助,希望能点击一下站内广告,谢谢!
上一篇:【Redis运维】Redis过期数据淘汰策略
下一篇:【Redis运维】Redis开发与运维规范
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

微信二维码