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 node的方法来进行处理。

时间: 2024-10-07 14:06:33

NUMA的取舍的相关文章

NUMA的取舍与优化设置

在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/文件夹中记录系统中的所有内存节点的相关详细信息.     

SMP、NUMA、MPP体系结构介绍

从系统架构来看,目前的商用服务器大体可以分为三类,即对称多处理器结构 (SMP : Symmetric Multi-Processor) ,非一致存储访问结构 (NUMA : Non-Uniform Memory Access) ,以及海量并行处理结构 (MPP : Massive Parallel Processing) . 从系统架构来看,目前的商用服务器大体可以分为三类,即对称多处理器结构 (SMP : Symmetric Multi-Processor) ,非一致存储访问结构 (NUMA

如何平衡工作与生活?真相在此(没有平衡,只有取舍,看你自己到底想要什么!)

我了解的一家外企,老板们经常和员工讲“ Work-life balance ”,然后很多人经常被迫在单位加班到晚上10点,晚上回到家里还得继续开会. 这是老板视角下的平衡吧? 在知乎和分答上,经常有人问我“当公司要求我加班时该怎样拒绝又不给领导留下不好的印象”或者“能不能比上司早下班”之类的问题. 这是员工在思考着怎样做到工作与生活的平衡. 那么,到底什么是 Work-life balance (工作与生活的平衡)?又该如何做到呢? Work-life balance 的本质 很多老板口头上讲工

NFL原则告诉我们做决策的时候,试图找到一个能解决所有问题,“大而全”的方案是不存在的。我们应当找到最关心的问题,因地制宜做出选择。——聚焦目标,取舍有道!

资源匮乏原则:有限的资源无法满足无穷的需要及欲望:因此想要多一点的某件东西,意味着必须放弃一些其他的东西:因为资源匮乏,所以我们必须做出选择. NFL原则:没有免费午餐定理(No Free Lunch)是wolpert和Macerday提出的"最优化理论的发展"之一.意思是不可能不付出就获得好处. 其结论是,我们比较两种算法A与B:1. 对于所有的问题,A并不总是优于B:2. 对于所有的问题,特定算法并不总是比随机算法好. 经济学原理告诉我们,做决策的时候,试图找到一个能解决所有问题,

【转】CPU优化(4)NUMA架构

转自 http://jimshu.blog.51cto.com/3171847/1266977/ 一.服务器系统架构 从系统架构来看,目前的商用服务器大体可以分为以下三类 1. 即对称多处理器结构(SMP:Symmetric Multi-Processor),, 在SMP架构中,每个CPU对称工作,各CPU共享相同的物理内存,每个 CPU访问内存中的任何地址所需时间是相同的,因此SMP也被称为一致存储器访问结构(UMA:Uniform Memory Access). 对SMP服务器进行扩展的主要

喜欢计算机的孩子们啊,保持单纯、不断思考,方成取舍之道

我小学二年级接触数学竞赛,四五年级接触计算机竞赛,现在计算机系大三,关键这条路还是我自己选的,你肯定就知道我对数学和计算机感情多深了. 小学数学风生水起,到中学勉强双一保送,再到如今大学生活平平,身边人大都见证了我的颓废,而我自己觉得呢?颓废是颓废,可更准确地说,其实是迷茫. 数学好玩,我小时候一直这么觉得:数学没意思,计算机好玩,这是我中学的想法:如今,我觉得它们都好玩,只可惜自己走了弯路. 于是,愚蠢的我在奋斗的路上手忙脚乱.但正因我忙,我更想挤出时间把自己走的弯路记录下来,但愿后人别走我的

A NUMA API for LINUX(numa架构)

NUMA简介 在传统的对称多处理器(SMP, Symmetric Multiprocessing)系统中,整个计算机中的所有cpu共享一个单独的内存控制器.当所有的cpu同时访问内存时,这个内存控制器常常成为性能瓶颈.同时,这种架构也不能适应使用大量的cpu的场景.于是,为了解决这些问题,越来越多的现代计算机系统采用了CC/NUMA(缓存一致性/非对称访存)架构.例如AMD* Opteron*, IBM* Power5*, HP* Superdome, and SGI* Altix*. 在SMP

第33本:《删除:大数据取舍之道》

第33本:<删除:大数据取舍之道> 这本书是看<大数据时代>后加入到待读书单中的,我想看看作者是如何从数 GB的照片中只保留最有用的几MB的照片的,后来找到了kindle版的电子书,就读来试试,说实话,这本书写得是相当的啰嗦,来回地重复“遗忘”和“记 忆”这两个词,不断地强调人类默认的状态是遗忘,而不是记忆.对于这种书的办法,利用快速阅读技巧,我也读得飞快,也把书名所说的“删除”技巧,大段大段 地略过,只记下了零星的有点启发的句子.对于研究“数据隐私问题”的专家可以慢慢地理解他的观

NUMA体系结构详解

1. NUMA的几个概念(Node,socket,core,thread) 对于socket,core和thread会有不少文章介绍,这里简单说一下,具体参见下图: 一句话总结:socket就是主板上的CPU插槽; Core就是socket里独立的一组程序执行的硬件单元,比如寄存器,计算单元等; Thread:就是超线程hyperthread的概念,逻辑的执行单元,独立的执行上下文,但是共享core内的寄存器和计算单元. NUMA体系结构中多了Node的概念,这个概念其实是用来解决core的分组