はじめに
本ドキュメントは、搭載されたPCIデバイスがどのNUMAに属しているかなど各NUMAノードのバインド情報の確認方法をご紹介しています。
NUMA(Non-Uniform Memory Access:非均一メモリアクセス)とは
共有メモリ型マルチプロセッサコンピュータシステムのアーキテクチャのひとつで、複数プロセッサが共有するメインメモリへのアクセスコストがメモリ領域とプロセッサに依存し、均一でないアーキテクチャのことです。スケールアップに伴いUMA(Uniform Memory Access:均一メモリアクセス)で生じる問題点を改善し、OSがNUMAの構成に沿った形でメモリマネジメントすることでローカルノード内での処理の割合が向上するためより高速に処理すること可能となります。
確認方法
各NUMAノードのバインド情報は lstopo-no-graphics -v で確認します。このコマンドはシステムのトポロジーを表示するため、非常に長い出力です。
# lstopo-no-graphics -v
Machine (P#0 total=401246236KB DMIProductName=UCSC-C240-M5SX DMIProductVersion=A0 DMIProductSerial=WMP243600TD DMIProductUUID=D7845065-DA23-CE49-8CDF-29BEE30B2119 DMIBoardVendor="Cisco Systems Inc" DMIBoardName=UCSC-C240-M5SX DMIBoardVersion=74-105773-01 DMIBoardSerial=WMP2433Y7VS DMIBoardAssetTag=Unknown DMIChassisVendor="Cisco Systems Inc" DMIChassisType=23 DMIChassisVersion=74-105778-03 DMIChassisSerial=WMP243600TD DMIChassisAssetTag=Unknown DMIBIOSVendor="Cisco Systems, Inc." DMIBIOSVersion=C240M5.4.1.2a.0.0624200115 DMIBIOSDate=06/24/2020 DMISysVendor="Cisco Systems Inc" Backend=Linux LinuxCgroup=/ OSName=Linux OSRelease=3.10.0-957.12.2.el7.x86_64 OSVersion="#1 SMP Fri Apr 19 21:09:07 UTC 2019" HostName=jcvim-aio6 Architecture=x86_64 hwlocVersion=1.11.8 ProcessName=lstopo-no-graphics)
NUMANode L#0 (P#0 local=199919644KB total=199919644KB)
Package L#0 (P#0 CPUVendor=GenuineIntel CPUFamilyNumber=6 CPUModelNumber=85 CPUModel="Intel(R) Xeon(R) Gold 6238 CPU @ 2.10GHz" CPUStepping=7)
L3Cache L#0 (size=30976KB linesize=64 ways=11 Inclusive=0)
L2Cache L#0 (size=1024KB linesize=64 ways=16 Inclusive=0)
L1dCache L#0 (size=32KB linesize=64 ways=8 Inclusive=0)
L1iCache L#0 (size=32KB linesize=64 ways=8 Inclusive=0)
Core L#0 (P#0)
PU L#0 (P#0)
PU L#1 (P#44)
... 省略 ...
上記出力結果の例にある "NUMANode L#0 " から下はノード0です。
Bridge Host->PCI L#0 (P#0 buses=0000:[00-03])
PCI 8086:a1d2 (P#277 busid=0000:00:11.5 class=0106(SATA))
Bridge PCI->PCI (P#448 busid=0000:00:1c.0 id=8086:a190 class=0604(PCI_B) link=3.94GB/s buses=0000:[01-01])
PCI 8086:1563 (P#4096 busid=0000:01:00.0 class=0200(Ether) link=3.94GB/s)
Network L#0 (Address=a4:88:73:58:ac:c2) "eno1"
PCI 8086:1563 (P#4097 busid=0000:01:00.1 class=0200(Ether) link=3.94GB/s)
Network L#1 (Address=a4:88:73:58:ac:c3) "eno2"
Bridge PCI->PCI (P#452 busid=0000:00:1c.4 id=8086:a194 class=0604(PCI_B) link=0.50GB/s buses=0000:[02-03])
Bridge PCI->PCI (P#8192 busid=0000:02:00.0 id=19a2:0120 class=0604(PCI_B) link=0.50GB/s buses=0000:[03-03])
PCI 102b:0522 (P#12288 busid=0000:03:00.0 class=0300(VGA))
GPU L#2 "card0"
GPU L#3 "controlD64"
Bridge Host->PCI L#4 (P#1 buses=0000:[17-19])
Bridge PCI->PCI (P#94208 busid=0000:17:00.0 id=8086:2030 class=0604(PCI_B) link=7.88GB/s buses=0000:[18-18] PCISlot=0)
PCI 1000:0016 (P#98304 busid=0000:18:00.0 class=0104(RAID) link=7.88GB/s)
Block(Disk) L#4 (LinuxDeviceID=8:0 Vendor=TOSHIBA Model=AL15SEB120N Revision=5703 SerialNumber=5000039a6822ed29 Type=Disk) "sda"
Block(Disk) L#5 (LinuxDeviceID=8:16 Vendor=TOSHIBA Model=AL15SEB120N Revision=5703 SerialNumber=5000039a68233551 Type=Disk) "sdb"
Block(Disk) L#6 (LinuxDeviceID=8:32 Vendor=Cisco Model=UCSC-RAID12GP-4G Revision=5.10 SerialNumber=60027e370b99ab00288a8698d812527f Type=Disk) "sdc"
Bridge PCI->PCI (P#94240 busid=0000:17:02.0 id=8086:2032 class=0604(PCI_B) link=7.88GB/s buses=0000:[19-19] PCISlot=1)
PCI 8086:1583 (P#102400 busid=0000:19:00.0 class=0200(Ether) link=7.88GB/s)
Network L#7 (Address=40:a6:b7:36:ff:28) "sriov0"
PCI 8086:1583 (P#102401 busid=0000:19:00.1 class=0200(Ether) link=7.88GB/s)
Network L#8 (Address=40:a6:b7:36:ff:29) "sriov2"
32 x { PCI 8086:154c (P#[collapsed] busid=[collapsed] class=0200(Ether)) }
ノード0のCPU情報の後に、PCI情報が表示されます。
上記の例では、eno1, eno2 や sriov0, sriov2 が NUMA ノード0 に属していることがわかります。
関連情報
[CVIM] NUMAの確認方法
https://community.cisco.com/t5/-/-/ta-p/4440982