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

TangLu 运维 2021-11-27 4019 0

一、什么是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


评论