Linux的numactl

本文介绍了Linux中的numactl工具,用于管理和优化NUMA(非一致内存访问)架构。内容包括numactl的使用,如查看硬件节点、调整内存分配策略,以及在遇到NUMA陷阱时如何避免性能问题。同时,提到了内核参数overcommit_memory和zone_reclaim_mode的影响,以及在特定场景下如MongoDB中如何处理NUMA问题。文章还对比了NUMA与SMP架构,讨论了不同的NUMA策略,并给出了解决swap问题的方法。最后,讨论了CPU节能模式和内存分配对MySQL性能的影响,提供了关闭或调整NUMA特性的建议。
摘要由CSDN通过智能技术生成

Linux的numactl

 
转载:https://www.cnblogs.com/tcicy/p/10191505.html#top
NUMA的取舍与优化设置


注意:numactl和numastat无法查看某个进程当前用的什么内存策略!!

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

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

      默认系统没有自带numactl,需要安装numactl:  
      #yum install numactl -y#numastat      等同于 cat /sys/devices/system/node/node0/numastat ,numactl包里包含numastat
在/sys/devices/system/node/文件夹中记录系统中的所有内存节点的相关详细信息。        
#numactl --hardware  列举系统上的NUMA节点,如果available大于0表示开启了numa
#numactl  --show   查看绑定信息

 

 Redhat或者Centos系统中可以通过命令判断bios层是否开启numa

 # grep -i numa /var/log/dmesg
      No NUMA configuration found 

说明numa为disable,如果不是上面内容说明numa为enable,例如显示:

NUMA: Using 30 for the hash shift.

可以通过lscpu命令查看机器的NUMA拓扑结构。

root@mongo_mongo_16 tmp]# lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                2
On-line CPU(s) list:   0,1
Thread(s) per core:    1
Core(s) per socket:    2
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 45
Model name:            Intel(R) Xeon(R) CPU E5-2680 0 @ 2.70GHz
Stepping:              7
CPU MHz:               2699.148
BogoMIPS:              5400.00
Hypervisor vendor:     VMware
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              20480K
NUMA node0 CPU(s):     0,1
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx hypervisor lahf_lm arat tsc_adjust

当发现numa_miss数值比较高时,说明需要对分配策略进行调整。例如将指定进程关联绑定到指定的CPU上,从而提高内存命中率。

(免费订阅,永久学习)学习地址: Dpdk/网络协议栈/vpp/OvS/DDos/NFV/虚拟化/高性能专家-学习视频教程-腾讯课堂

更多DPDK相关学习资料有需要的可以自行报名学习,免费订阅,永久学习,或点击这里加

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值