首页 > 其他分享 >NUMA的选择

NUMA的选择

时间:2022-12-05 11:31:21浏览次数:59  
标签:node numactl numa 选择 处理器 内存 NUMA


现在的机器上都是有多个CPU和多个内存块的。以前我们都是将内存块看成是一大块内存,所有CPU到这个共享内存的访问消息是一样的。这就是之前普遍使用的SMP模型。但是随着处理器的增加,共享内存可能会导致内存访问冲突越来越厉害,且如果内存访问达到瓶颈的时候,性能就不能随之增加。NUMA(Non-Uniform Memory Access)就是这样的环境下引入的一个模型。比如一台机器是有2个处理器,有4个内存块。我们将1个处理器和两个内存块合起来,称为一个NUMA node,这样这个机器就会有两个NUMA node。在物理分布上,NUMA node的处理器和内存块的物理距离更小,因此访问也更快。比如这台机器会分左右两个处理器(cpu1, cpu2),在每个处理器两边放两个内存块(memory1.1, memory1.2, memory2.1,memory2.2),这样NUMA node1的cpu1访问memory1.1和memory1.2就比访问memory2.1和memory2.2更快。所以使用NUMA的模式如果能尽量保证本node内的CPU只访问本node内的内存块,那这样的效率就是最高的。

在运行程序的时候使用numactl -m和-physcpubind就能制定将这个程序运行在哪个cpu和哪个memory中。玩转cpu-topology 给了一个表格,当程序只使用一个node资源和使用多个node资源的比较表(差不多是38s与28s的差距)。所以限定程序在numa node中运行是有实际意义的。

但是呢,话又说回来了,制定numa就一定好吗?--numa的陷阱。SWAP的罪与罚文章就说到了一个numa的陷阱的问题。现象是当你的服务器还有内存的时候,发现它已经在开始使用swap了,甚至已经导致机器出现停滞的现象。这个就有可能是由于numa的限制,如果一个进程限制它只能使用自己的numa节点的内存,那么当自身numa node内存使用光之后,就不会去使用其他numa node的内存了,会开始使用swap,甚至更糟的情况,机器没有设置swap的时候,可能会直接死机!所以你可以使用numactl --interleave=all来取消numa node的限制。



综上所述得出的结论就是,根据具体业务决定NUMA的使用。

如果你的程序是会占用大规模内存的,你大多应该选择关闭numa node的限制(或从硬件关闭numa)。因为这个时候你的程序很有几率会碰到numa陷阱。

另外,如果你的程序并不占用大内存,而是要求更快的程序运行时间。你大多应该选择限制只访问本numa node的方法来进行处理


------------------
在os层numa关闭时,打开bios层的numa会影响性能,QPS会下降15-30%;

在bios层面numa关闭时,无论os层面的numa是否打开,都不会影响性能。

安装numactl:
#yum install numactl -y
#numastat 等同于 cat /sys/devices/system/node/node0/numastat ,在/sys/devices/system/node/文件夹中记录系统中的所有内存节点的相关详细信息。   #numactl --hardware 列举系统上的NUMA节点

#numactl --show 查看绑定信息


​​​https://jingyan.baidu.com/article/17bd8e525461ba85ab2bb8ec.html ​

标签:node,numactl,numa,选择,处理器,内存,NUMA
From: https://blog.51cto.com/u_14230175/5911681

相关文章

  • CSS基础-选择器进阶,背景相关属性(颜色/图片)
    CSS基础-选择器进阶,背景相关属性(颜色/图片)目标:能够理解复合选择器的规则,并使用复合选择器在HTML中选择元素学习路径: 1.复合选择器 2.并集选择器 3.交......
  • 老板:你为什么要选择 Vue?
    大家好,我是Kagol,VueDevUI开源组件库和EditorX富文本编辑器创建者,专注于前端组件库建设和开源社区运营。假如你是团队的前端负责人,现在老板要拓展新业务,需要开发一个......
  • css选择器选择奇数行或偶数行
    css选择器选择奇数行或偶数行实现方式有两种方式一:nth-child/*奇数行*/div:nth-child(odd){}/*偶数行*/div:nth-child(even){}:nth-child(n)选择器匹......
  • vue element ui 使用el-cascader实现城市选择
    安装依赖cnpminstallelement-china-area-data-S说明provinceAndCityData是省市二级联动数据(不带“全部”选项)regionData是省市区三级联动数据(不带“全部”选项)prov......
  • 我为什么选择Wiki.js记笔记?
    很长一段时间里,我都被困扰着,感觉陷入了笔记的泥潭,而积累的如此多的笔记也没有形成我自己的知识体系。之前的记笔记方式笔记的来源微信公众号技术博客纸质书籍官网文档PDF自......
  • 我为什么选择Wiki.js记笔记?
    很长一段时间里,我都被困扰着,感觉陷入了笔记的泥潭,而积累的如此多的笔记也没有形成我自己的知识体系。之前的记笔记方式笔记的来源微信公众号技术博客纸质书籍官网文......
  • css关系选择器
    父子关系div>span{}祖先后代divspan{}兄弟关系div+span{}标签选择器divspan{}id选择器#span{}class选择器.div{}......
  • day04--选择结构
    顺序结构java的基本结构就是顺序结构,除非特别指明,否则就一句一句执行。语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它......
  • xml_解析_Jsoup_根据选择器查询与xml_解析_Jsoup_根据Xpath查询
    xml_解析_Jsoup_根据选择器查询 快捷查询方式:1.selector:选择器  使用的方法:Elements select​(StringcssQuery)......
  • golang选择排序
    选择排序:每一轮迭代选择出一个最小的数,然后做一次交换元素。不用像冒泡排序那样需要交换元素那么频繁。不过也是效率比较槽糕。原理介绍:{4,7,3,10,1,8,19}第一轮迭代,从第一......