签到成功

知道了

CNDBA社区CNDBA社区

Linux NUMA技术

2021-12-10 11:24 3167 0 原创 mysql
作者: hbhe0316

NUMA(Non-Uniform Memory Access)字面直译为“非一致性内存访问”,对于Linux内核来说最早出现在2.6.7版本上。这种特性对于当下大内存+多CPU为潮流的X86平台来说确实会有不少的性能提升,但相反的,如果配置不当的话,也是一个很大的坑。本文就从头开始说说Linux下关于CPU NUMA特性的配置和调优。
  最早Intel在Nehalem架构上实现了NUMA,取代了在此之前一直使用的FSB前端总线的架构,用以对抗AMD的HyperTransport技术。一方面这个架构的特点是内存控制器从传统的北桥中移到了CPU中,排除了商业战略方向的考虑之外,这样做的方法同样是为了实现NUMA。
  在SMP多CPU架构中,传统上多CPU对于内存的访问是总线方式。是总线就会存在资源争用和一致性问题,而且如果不断的增加CPU数量,总线的争用会愈演愈烈,这就体现在4核CPU的跑分性能达不到2核CPU的2倍,甚至1.5倍!理论上来说这种方式实现12core以上的CPU已经没有太大的意义。
  Intel的NUMA解决方案,Litrin始终认为它来自本家的安藤。他的模型有点类似于MapReduce。放弃总线的访问方式,将CPU划分到多个Node中,每个node有自己独立的内存空间。各个node之间通过高速互联通讯,通讯通道被成为QuickPath Interconnect即QPI。
  这个架构带来的问题也很明显,如果一个进程所需的内存超过了node的边界,那就意味着需要通过QPI获取另一node中的资源,尽管QPI的理论带宽远高于传统的FSB,比如当下流行的内存数据库,在这种情况下就很被动了。
在RHEL 7 中,需要修改/etc/default/grub文件,添加numa=off,并且需要重建grub,然后重启OS:http://www.cndba.cn/hbhe0316/article/22731http://www.cndba.cn/hbhe0316/article/22731http://www.cndba.cn/hbhe0316/article/22731

启动MySQL的时候,关闭NUMA特性:

  numactl —interleave=all mysqld
当然,最好的方式是在BIOS中关闭。

http://www.cndba.cn/hbhe0316/article/22731
http://www.cndba.cn/hbhe0316/article/22731

  vm.swappiness是操作系统控制物理内存交换出去的策略。它允许的值是一个百分比的值,最小为0,最大运行100,该值默认为60。vm.swappiness设置为0表示尽量少swap,100表示尽量将inactive的内存页交换出去。http://www.cndba.cn/hbhe0316/article/22731

 所以,在MySQL的服务器上最好设置vm.swappiness=0。http://www.cndba.cn/hbhe0316/article/22731http://www.cndba.cn/hbhe0316/article/22731

  我们可以通过在sysctl.conf中添加一行:

http://www.cndba.cn/hbhe0316/article/22731

echo "vm.swappiness = 0" >> /etc/sysctl.conf
sysctl -p

并使用sysctl -p来使得该参数生效。http://www.cndba.cn/hbhe0316/article/22731

版权声明:本文为博主原创文章,未经博主允许不得转载。

Mysql

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
hbhe0316

hbhe0316

关注

1.只有承认无知,才能装下新的东西; 2.进步来自一点点滴滴的积累; 3.广博让你更优秀,而专业让你无法替代; 4.挫折和失败能够转换为一种财富。

  • 889
    原创
  • 1
    翻译
  • 13
    转载
  • 24
    评论
  • 访问:2646608次
  • 积分:1523
  • 等级:核心会员
  • 排名:第6名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ