linux中的NUMA配置
2021/10/21 7:10:24
本文主要是介绍linux中的NUMA配置,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
linux性能优化——关于NUMA的配置
检查NUMA配置
numa是为了应对多处理器系统共享同一个总线导致的总线负载过大问题。本质上将M个处理器分为N组,每组处理器之间用IMC BUS总线进行连接,每一组叫做一个Node,其结构类似于一个小的UMA(Uniform Memory Access),每个Node中有一个集成的内存控制器IMC,Intergrated Memory Controller。组内CPU用IMCBUS总线连接,Node之间用QPI总线连接,QPI延迟明显高于IMCBUS。
如果numa的available nodes数量大于1,则表明NUMA已开启。
NUMA的基本信息可以通过检查cpu状态,即使用lscpu指令来看到。执行如下指令:
lscpu | grep -i numa
得到如下格式结果:
NUMA node(s): 2 NUMA node0 CPU(s): 0-27,56-83 NUMA node1 CPU(s): 28-55,84-111
结果显示NUMA有2个node, 如果大于1个node,说明NUMA开启。此外对新手要注意:pcie上并没有NUMA信息,因为pcie上的信息都是硬件设备,NUMA并不是硬件,而只是一种内存技术,该技术和CPU的支持分不开,所以,用lscpu指令可以看到NUMA信息。
如果要看NUMA详细的信息,可以用numactl和numastat指令。
numactl --hareward #numactl -H
得到如下信息:
available: 2 nodes (0-1) node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 node 0 size: 128445 MB node 0 free: 96356 MB node 1 cpus: 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 node 1 size: 128982 MB node 1 free: 97986 MB node distances: node 0 1 0: 10 20 1: 20 10
此外还要检查pcie上的设备是否和对应的NUMA节点对应。
例如,某一个pcie地址段是和NUMA的Node0绑定的,则该地址段上的设备应绑定Node0。如果本应是绑定Node0的设备绑定了Node1, 则必然导致该设备运行的性能下降。
注:通过实验得出,00-7f的bus上,所有设备均应绑定Node0,80-ff的bus上,所有设备均应绑定Node1。 7f对应十进制是127,ff对应十进制是255,正好是256位长度,说名pcie位宽是256位。前半部分属于Node0,后半部分属于Node1。
以网卡为例,通过lspci找到了某一张网卡的pcie地址号0000:4b:00.01,bus为4b,小于80,故应绑定Node0。通过以下指令查询该网卡是否绑定Node0:
cat /sys/bus/pci/devices/0000\:4b\:00.1/numa_node
如果返回的值为0,说明该网卡绑定NUMA正确。
另外,如果仅仅是查看某一个网卡绑定的numa_node,可以通过以下指令而不需要通过pcie查找:
cat /sys/class/net/enp129s0f0/device/numa_node
该指令的值会返回所属的Node号,如果返回0,便代表该网卡绑定在Node0上。
这两个指令共同点都是在sys文件系统中查找。
如何配置NUMA
NUMA的配置对于性能至关重要。
这篇关于linux中的NUMA配置的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-18git仓库有更新,jenkins 自动触发拉代码怎么配置的?-icode9专业技术文章分享
- 2024-12-18Jenkins webhook 方式怎么配置指定的分支?-icode9专业技术文章分享
- 2024-12-13Linux C++项目实战入门教程
- 2024-12-13Linux C++编程项目实战入门教程
- 2024-12-11Linux部署Scrapy教程:新手入门指南
- 2024-12-11怎么将在本地创建的 Maven 仓库迁移到 Linux 服务器上?-icode9专业技术文章分享
- 2024-12-10Linux常用命令
- 2024-12-06谁看谁服! Linux 创始人对于进程和线程的理解是…
- 2024-12-04操作系统教程:新手入门及初级技巧详解
- 2024-12-04操作系统入门:新手必学指南