はじめに
本ドキュメントは、NUMA に関する情報をいくつかのコマンドを使用して確認する方法を説明しています。
NUMA(Non-Uniform Memory Access:非均一メモリアクセス)とは
共有メモリ型マルチプロセッサコンピュータシステムのアーキテクチャのひとつで、複数プロセッサが共有するメインメモリへのアクセスコストがメモリ領域とプロセッサに依存し、均一でないアーキテクチャのことです。スケールアップに伴いUMA(Uniform Memory Access:均一メモリアクセス)で生じる問題点を改善し、OSがNUMAの構成に沿った形でメモリマネジメントすることでローカルノード内での処理の割合が向上するためより高速に処理すること可能となります。
確認方法
以下のコマンドを実行してそのノードのNUMAに関する情報を確認します。
NUMAの有効性を確認する場合
# dmesg |grep -i numa
[ 0.000000] NUMA: Initialized distance table, cnt=2
[ 0.000000] NUMA: Node 0 [mem 0x00000000-0x7fffffff] + [mem 0x100000000-0x303fffffff] -> [mem 0x00000000-0x303fffffff]
[ 0.000000] Enabling automatic NUMA balancing. Configure with numa_balancing= or the kernel.numa_balancing sysctl
[ 4.311843] pci_bus 0000:00: on NUMA node 0
[ 4.470428] pci_bus 0000:17: on NUMA node 0
[ 5.892136] pci_bus 0000:3a: on NUMA node 0
[ 6.037380] pci_bus 0000:5d: on NUMA node 0
[ 6.124307] pci_bus 0000:80: on NUMA node 1
[ 6.230369] pci_bus 0000:85: on NUMA node 1
[ 6.333963] pci_bus 0000:ae: on NUMA node 1
[ 6.436954] pci_bus 0000:d7: on NUMA node 1
#
NUMAの構成を確認する場合
# numactl --hardware
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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
node 0 size: 96929 MB
node 0 free: 18030 MB
node 1 cpus: 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
node 1 size: 98304 MB
node 1 free: 25169 MB
node distances:
node 0 1
0: 10 21
1: 21 10
ノード数やコア数を表示する場合
# numactl --show
policy: default
preferred node: current
physcpubind: 0 20 40 60
cpubind: 0 1
nodebind: 0 1
membind: 0 1
ノード毎のメモリ使用状況を表示する場合
# numastat -m
Per-node system memory usage (in MBs):
Node 0 Node 1 Total
--------------- --------------- ---------------
MemTotal 96929.30 98304.00 195233.30
MemFree 18032.76 25168.20 43200.96
MemUsed 78896.54 73135.80 152032.34
Active 5591.32 4642.98 10234.30
Inactive 1025.24 711.53 1736.77
Active(anon) 4578.09 3998.64 8576.73
Inactive(anon) 267.45 186.11 453.55
Active(file) 1013.23 644.34 1657.57
Inactive(file) 757.79 525.43 1283.21
Unevictable 2286.17 1188.70 3474.87
Mlocked 2286.17 1188.70 3474.87
Dirty 124.21 24.39 148.60
Writeback 0.00 0.00 0.00
FilePages 2780.23 1810.23 4590.46
Mapped 184.65 204.14 388.79
AnonPages 6124.42 4732.71 10857.13
Shmem 1003.45 589.09 1592.53
KernelStack 35.48 32.69 68.17
PageTables 57.01 68.28 125.29
NFS_Unstable 0.00 0.00 0.00
Bounce 0.00 0.00 0.00
WritebackTmp 0.00 0.00 0.00
Slab 638.28 663.17 1301.45
SReclaimable 392.53 430.66 823.19
SUnreclaim 245.75 232.51 478.26
HugePages_Total 0.00 0.00 0.00
HugePages_Free 0.00 0.00 0.00
HugePages_Surp 0.00 0.00 0.00
ノードベースでの統計情報を確認する場合
# numastat -n
Per-node numastat info (in MBs):
Node 0 Node 1 Total
--------------- --------------- ---------------
Numa_Hit 18452006.53 13916494.08 32368500.61
Numa_Miss 0.00 0.00 0.00
Numa_Foreign 0.00 0.00 0.00
Interleave_Hit 381.76 380.02 761.78
Local_Node 18449816.78 13915457.31 32365274.09
Other_Node 2189.75 1036.77 3226.52