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的配置對於性能至關重要。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM