Mongodb 使用numactl 启动
admin
2023-01-26 06:21:16
0

一、NUMA介绍

在介绍numactl之前,需要先说说NUMA是什么,这样才能更好的理解numactl。

  NUMA(Non Uniform Memory Access Architecture)字面直译为"非一致性内存访问",对于Linux内核来说最早出现在2.6.7版本上。这种特性对于当下大内存+多CPU为潮流的X86平台来说确实会有不少的性能提升,但相反的,如果配置不当的话,也是一个很大的坑.

  非统一内存访问(NUMA)是一种用于多处理器的电脑记忆体设计,内存访问时间取决于处理器的内存位置。 在NUMA下,处理器访问它自己的本地存储器的速度比非本地存储器(存储器的地方到另一个处理器之间共享的处理器或存储器)快一些。NUMA架构在逻辑上遵循对称多处理(SMP)架构。 它是在二十世纪九十年代被开发出来的,开发商包括Burruphs (优利系统), Convex Computer(惠普),意大利霍尼韦尔信息系统(HISI)的(后来的Group Bull),Silicon Graphics公司(后来的硅谷图形),Sequent电脑系统(后来的IBM),通用数据(EMC), Digital (后来的Compaq ,HP)。 这些公司研发的技术后来在类Unix操作系统中大放异彩,并在一定程度上运用到了Windows NT中。

首次商业化实现基于NUMA的Unix系统的是对称多处理XPS-100系列服务器,它是由VAST公司的Dan Gielen为HISI设计的。 这个架构的巨大成功使HISI成为了欧洲的顶级Unix厂商。

  NUMA通过提供分离的存储器给各个处理器,避免当多个处理器访问同一个存储器产生的性能损失来试图解决这个问题。对于涉及到分散的数据的应用(在服务器和类似于服务器的应用中很常见),NUMA可以通过一个共享的存储器提高性能至n倍,而n大约是处理器(或者分离的存储器)的个数。

最早Intel在Nehalem架构上实现了NUMA,取代了在此之前一直使用的FSB前端总线的架构,用以对抗AMD的HyperTransport技术。一方面这个架构的特点是内存控制器从传统的北桥中移到了CPU中,排除了商业战略方向的考虑之外,这样做的方法同样是为了实现NUMA.

   Intel的NUMA解决方案,Litrin始终认为它来自本家的安藤。他的模型有点类似于MapReduce。放弃总线的访问方式,将CPU划分到多个Node中,每个node有自己独立的内存空间。各个node之间通过高速互联通讯,通讯通道被成为QuickPath Interconnect即QPI。

二、numactl介绍

numactl - Control NUMA policy for processes or shared memory   #官方介绍
翻译:控制进程或共享内存的NUMA策略

Linux提供了一个手工调优的命令numactl(默认不安装),首先你可以通过它查看系统的numa状态

#numactl --hardware 
available: 2 nodes (0-1)
node 0 cpus: 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30
node 0 size: 16290 MB
node 0 free: 11947 MB
node 1 cpus: 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31
node 1 size: 16384 MB
node 1 free: 14282 MB
node distances:
node   0   1 
  0:  10  21 
  1:  21  10 
此系统共有2个node,各领取16个CPU和16G内存。

这里假设我要执行一个java param命令,此命令需要12G内存;一个python param命令,需要16G内存。
最好的优化方案时python在node0中执行,而java在node1中执行,那命令是:
#numactl --cpubind=0 --membind=0 python param
#numactl --cpubind=1 --membind=1 java param
当然,也可以自找没趣进行如下配置:
#numactl --cpubind=0 --membind=0,1 java param

通过numastat命令可以查看numa状态
注:numastat - Show per-NUMA-node memory statistics for processes and the operating system
中文翻译:显示进程和操作系统的每个NUMA节点内存统计信息
# numastat
                           node0           node1
numa_hit             61086587932     25494360922
numa_miss              101325832     28581785059
numa_foreign         28581785059       101325832
interleave_hit             28949           28518
local_node           61086561129     25494416828
other_node             101352635     28581729153

other_node过高意味着需要重新规划numa.

三、使用numactl启动mongodb

#numactl --interleave=all /opt/app/mongodb/bin/mongod -f /etc/mongodb.conf
即分配所有的node供其使用,这也是官方推荐的用法。

四、使用普通用户启动mongodb

关闭
#su - mongodb -s /bin/bash -c "/opt/app/mongodb/bin/mongod -f /opt/app/mongodb/etc/mongodb.conf --shutdown"
启动
#su - mongodb -s /bin/bash -c "numactl --interleave=all /opt/app/mongodb/bin/mongod -f /opt/app/mongodb/etc/mongodb.conf"


相关内容

热门资讯

德国总理:美国正在被伊朗羞辱 德国之声4月27日报道,德国总理默茨在访问一所学校时表示,在当前的持续冲突中,伊朗领导层正试图羞辱美...
理响中国|“长”歌以行,风云激... 光阴如梭,东方潮阔。这里是中国的长三角,世界的长三角。无论过去、现在还是未来,这片土地都因时代而生,...
白宫:特朗普及其国安团队开会讨... 新华社华盛顿4月27日电 美国白宫新闻秘书莱维特27日在记者会上证实,总统特朗普及其国家安全团队当天...
人民日报刊文:日本放开杀伤性武... 日本放开杀伤性武器出口推高地缘冲突风险(国际论坛)常思纯《人民日报》(2026年04月28日 第 0...
医疗保障法草案二审:明确生育保... 满足多样化健康保障需求本报记者 彭 波4月27日,医疗保障法草案二审稿提请十四届全国人大常委会第二十...
天津一景区发生自转旋翼机事故1... 澎湃新闻记者 吕新文中国民用航空华北地区管理局4月22日公布《豪客通航“10•1”天津长芦汉盐旅游区...
卡塔尔埃米尔与美国总统特朗普通... 当地时间24日,卡塔尔埃米尔塔米姆与美国总统特朗普通电话,重点就中东地区局势以及伊朗与美国谈判问题交...
男子30年前被扣押2859克黄... 澎湃新闻记者 王鑫家住辽宁省大连市的潘永嘉近日向澎湃新闻反映称,三十年前,他在大连周水子机场被盖州市...
商务部:取消反制欧盟两家金融机... 中华人民共和国商务部令二〇二六年 第1号鉴于欧盟已取消对中国两家金融机构的制裁措施,现公布《关于取消...
过去24小时共有5艘船只通过霍... 总台记者当地时间24日获悉,过去24小时内,共有5艘船只通过霍尔木兹海峡,其中包括一艘伊朗油轮。(总...