`

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://www.cnblogs.com/wjoyxt/p/4804081.html

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

http://www.cnblogs.com/zhoujinyi/p/3479801.html
分享到:
评论

相关推荐

    matlab矩形分割代码-lego-searching:该代码是在MATLAB中编写的,用于计算训练图像上蓝色矩形(numA)的数量和红色正方

    (numA) 的数量和红色正方形 (numB) 的数量。 初始化代码: 下载存储库lego-searching 在MATLAB中打开initialize.m,选择要处理的训练图像,即train__.jpg 运行脚本 程序: 将图像下载为 I=imread('filename') 并调用...

    性能瓶颈分析及案例总结

    47 GC 回收器选择 48 年轻代与年老代的参数调优建议 49 GC 回收时常见的异常 410 CMS 回收是否等于 FULL GC? 411 判断 FULL GC 是否正常的标准 412 FULL GC 出现的几种情况 413 CMS 常用参数 414 堆内存溢出后处理...

    MySQL性能全面优化方法参考,从CPU,文件系统选择到mysql.cnf参数优化

    在服务器的BIOS设置中,可调整下面的几个配置,目的是发挥CPU最大性能,或者避免经典的NUMA问题: 1、选择Performance Per Watt Optimized(DAPC)模式,发挥CPU最大性能,跑DB这种通常需要高运算量的服务就不要考虑...

    比较全面的MySQL优化参考

     在服务器的BIOS设置中,可调整下面的几个配置,目的是发挥CPU大性能,或者避免经典的NUMA问题:  1、选择Performance Per Watt Optimized(DAPC)模式,发挥CPU大性能,跑DB这种通常需要高运算量的服务不要考虑...

    MySQL常见的底层优化操作教程及相关建议

     在服务器的BIOS设置中,可调整下面的几个配置,目的是发挥CPU最大性能,或者避免经典的NUMA问题: (1)、选择Performance Per Watt Optimized(DAPC)模式,发挥CPU最大性能,跑DB这种通常需要高运算量的服务就不要...

    NLframe2D:二维框架模型的几何非线性分析-matlab开发

    用户可以在多个公式和解决方案选项之间进行选择来执行数值分析。 该程序被认为是MSc论文“具有几何非线性的平面框架模型结构分析的教育工具”的辅助工具: http://webserver2.tecgraf.puc-rio.br/~lfm/teses/...

    Exercicios-node

    您将必须进行处理,仅显示用户请求的运算结果(即,不显示所有算术运算,仅显示用户选择的算术运算)。 为了具有封装的概念,不应将操作直接写在script.js文件中。 因此,创建一个包含4个算术运算的模块,并将此...

    2计算机网络复习题.docx

    一、单项选择题(每题1分) 二十一世纪的一些重要特征就是数字化、网络化和信息化,它是一个以网络为核心的信息时代。这里的网络中可使用户能够迅速传送数据文件,以及从网络上查找并获取各种有用资料,包括图像和...

    互联网公司 MySQL运行环境建议

    大牛写的中文14页MySQL运行环境规范,包括操作系统版本选择,建议磁盘分区规则,关键提供了内核参数建议值,调整最大文件数限制,修改IO调度器设置,修改swappiness设置,关闭NUMA特性,关闭CPU的节能模式。...

    混合结构数据库中基于页迁移的存储分层算法 (2010年)

    不同于NUMA的迁移代价计算方法,该算法按照迁移代价选择相应的存储介质,并且对不同工作负载的数据进行迁移。实验结果显示,算法有效地提升了数据库系统的I/O性能,同时大幅度地减少了对闪存的擦写次数。

    Linux 2.6.19.x 内核编译配置选项简介

    只有含有大量CPU(大于16个)的SMP系统或NUMA(非一致内存访问)系统才需要它 Kernel->user space relay support (formerly relayfs) 页码,1/28 2009-12-25 file://C:\DOCUME~1\WENXIA~1\LOCALS~1\Temp\NOVDYLQW.htm

    架构解密从分布式到微服务(Leaderus著)

     更别提内容涉及Microservices、Kubernetes、SOA、Distribute Memory、ElasticSearch、Kafka、CAP、NUMA、SOA、GlusterFS、Actor、Akka、RabbitMQ、Spring Cloud、ZeroC Ice……  Leader-us的文字还是那样充满IT...

    疯狂内核之——Linux虚拟内存

    2.1.1 NUMA架构 61 2.1.2 内存管理区 62 2.2 伙伴系统算法 65 2.2.1 数据结构 66 2.2.2 块分配 67 2.2.3 块释放 69 2.3 Linux页面级内存管理 72 2.3.1 分配一组页面 73 2.3.2 释放一组页面 80 2.4 每CPU页面高速缓存...

    什么是PC服务器.doc

    这造就了PC服务 器在部件的搭配和选择的灵活性,且管理和维护更加方便。借助以上优势,在各种架构 的服务器相互竞争的环境下,PC服务器阵营始终不败并不断扩大。 PC服务器的分类 从应用领域来看,PC服务器大致可分为...

    CLR.via.C#.(中文第3版)(自制详细书签)Part1

    CLR.via.C#.(中文第3版)(自制详细书签) CLR via C#(第3版) Jeffrey Richter 著 周靖 译 出版时间:2010年09月 页数:800 ...享有全球盛誉的编程专家Jeffrey Richter,这位与Microsoft .NET开发团队合作长达8年...

    CLR.via.C#.(中文第3版)(自制详细书签)

    25.5 NUMA架构的机器 25.6 CLR线程和Windows线程 25.7 使用专用线程执行异步的计算限制操作 25.8 使用线程的理由 25.9 线程调度和优先级 25.10 前台线程和后台线程 25.11 继续学习 第26章 计算限制的异步操作...

    CLR.via.C#.(中文第3版)(自制详细书签)Part3

    CLR.via.C#.(中文第3版)(自制详细书签)Part3 CLR via C#(第3版) Jeffrey Richter 著 周靖 译 出版时间:2010年09月 页数:800 介绍 享有全球盛誉的编程专家Jeffrey Richter,这位与Microsoft .NET开发团队合作...

    CLR.via.C#.(中文第3版)(自制详细书签)Part2

    CLR.via.C#.(中文第3版)(自制详细书签)Part2 CLR via C#(第3版) Jeffrey Richter 著 周靖 译 出版时间:2010年09月 页数:800 介绍 享有全球盛誉的编程专家Jeffrey Richter,这位与Microsoft .NET开发团队合作...

Global site tag (gtag.js) - Google Analytics