Linux系統支援NUMA架構,使用者可以透過numactl與numastat命令來查看NUMA的狀況。
多核心(SMP)的CPU已經非常普及了,而且隨著虛擬化與雲端設備的需求日增,電腦的CPU核心數量只會越來越多。但是程式要在多個CPU核心上執行時,就會多出訊息傳遞的工作要進行,譬如說某個核心執行部分運算結果,平行處理之後就需要把結果集中或傳遞給其他在核心上執行的程式。所以當核心增加,其資料傳遞的副作用也就會增加。現在的多核心系統採用NUMA (Non-Uniform Memory Access)的設計來降低核心間資料傳輸的複雜度,也就是將系統切割成數個node,讓每一個node有自己的記憶體與cache區塊(速度較快),再透過numa管理機制來協調每個node之間的資料交換(速度較慢)。
Linux系統支援NUMA架構,使用者可以透過numactl與numastat命令來查看NUMA的狀況。
numactl --show
policy: default
preferred node: current
physcpubind: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
cpubind: 0
nodebind: 0
membind: 0
numastat
node0
numa_hit 1406218
numa_miss 0
numa_foreign 0
interleave_hit 47223
local_node 1406218
other_node 0
上圖顯示,我的系統擁有24個核心**(physcpubind:),但目前只設定成單一node(nodebind: 0)。也就是這樣node間的記憶體數量與失誤才都是0(numa_miss, numa_foreign, other_node)**。
[本系列文章]
Linux系統效能分析與探討 - [1] CPU的效能關鍵字
Linux系統效能分析與探討 - [2] 記憶體的效能關鍵字
Linux系統效能分析與探討 - [3] Linux作業系統網路模組的效能關鍵字
Linux系統效能分析與探討 - [4] Linux block device的效能關鍵字
Linux系統效能分析與探討 - [5] 了解process的運作的指令 1 - ps
Linux系統效能分析與探討 - [6] 了解process的運作的指令2 - top
Linux系統效能分析與探討 - [7] 了解process的運作的指令3 - pstree
Linux系統效能分析與探討 - [8] 了解process使用記憶體的狀況 - pmap
Linux系統效能分析與探討 - [9] 顯示系統的附載狀況 - uptime, w
Linux系統效能分析與探討 - [10] 顯示系統的狀態 - vmstat
Linux系統效能分析與探討 - [11] 檢視記憶體的使用狀況 - free
Linux系統效能分析與探討 - [12] 取得詳細記憶體資訊 - cat /proc/meminfo
Linux系統效能分析與探討 - [13] Kernel slab cache的資訊 - slabtop
Linux系統效能分析與探討 - [14] Kernel buddy system 的內容 - /proc/buddyinfo
Linux系統效能分析與探討 - [15] slabinfo
Linux系統效能分析與探討 - [16] 系統使用狀態: mpstat, sar
Linux系統效能分析與探討 - [17] CPU與disk的狀態 - iostat
Linux系統效能分析與探討 - [18] 更豐富的iostat內容