Dengan asumsi OS Linux yang cukup baru, apakah ada cara mudah untuk menentukan ke NUMA mana simpul PCIe slot, di mana perangkat dicolokkan, milik?
Dengan asumsi OS Linux yang cukup baru, apakah ada cara mudah untuk menentukan ke NUMA mana simpul PCIe slot, di mana perangkat dicolokkan, milik?
Jawaban:
Anda harus pergi ke direktori slot PCIe yang dimaksud, misalnya eth0
:
cd /sys/class/net/eth0/device
di mana Anda akan menemukan numa_node
,, local_cpus
dan local_cpulist
, tiga file yang menarik bagi Anda. Anda bisa hanya cat
mereka, dan melihat data yang diinginkan.
Anda juga dapat menggunakan hwloc ( http://www.open-mpi.de/projects/hwloc/ ) jika Anda tahu id perangkat. Namun, jika Anda memiliki 2 perangkat yang sama (misalnya, GPU), satu-satunya cara untuk mengetahui simpul NUMA di mana slot fisik terkait adalah dengan melihat manual motherboard.
Untuk Asus Z9PE-D8 ( http://dlcdnet.asus.com/pub/ASUS/mb/LGA2011/Z9PE-D8-WS/Manual/e8726_z9pe-d8_ws.pdf ) ada di halaman 223.
Jawaban yang diterima hanya berfungsi untuk kartu jaringan, sejauh yang saya temukan. Per jawaban GuillermoMA, hwloc akan memberi Anda real deal bahkan jika itu tidak terbaca. lstopo
ditemukan dalam paket hwloc (setidaknya di RHEL 7):
# lstopo
Machine (256GB)
NUMANode L#0 (P#0 128GB)
Socket L#0 + L3 L#0 (20MB)
L2 L#0 (256KB) + L1d L#0 (32KB) + L1i L#0 (32KB) + Core L#0 + PU L#0 (P#0)
L2 L#1 (256KB) + L1d L#1 (32KB) + L1i L#1 (32KB) + Core L#1 + PU L#1 (P#2)
L2 L#2 (256KB) + L1d L#2 (32KB) + L1i L#2 (32KB) + Core L#2 + PU L#2 (P#4)
L2 L#3 (256KB) + L1d L#3 (32KB) + L1i L#3 (32KB) + Core L#3 + PU L#3 (P#6)
L2 L#4 (256KB) + L1d L#4 (32KB) + L1i L#4 (32KB) + Core L#4 + PU L#4 (P#8)
L2 L#5 (256KB) + L1d L#5 (32KB) + L1i L#5 (32KB) + Core L#5 + PU L#5 (P#10)
L2 L#6 (256KB) + L1d L#6 (32KB) + L1i L#6 (32KB) + Core L#6 + PU L#6 (P#12)
L2 L#7 (256KB) + L1d L#7 (32KB) + L1i L#7 (32KB) + Core L#7 + PU L#7 (P#14)
HostBridge L#0
PCIBridge
PCI 1000:005d
Block L#0 "sda"
PCIBridge
PCI 14e4:16a1
Net L#1 "eth0"
PCI 14e4:16a1
Net L#2 "eth1"
PCI 14e4:16a1
Net L#3 "eth2"
PCI 14e4:16a1
Net L#4 "eth3"
PCI 8086:8d62
PCIBridge
PCIBridge
PCIBridge
PCIBridge
PCI 102b:0534
PCI 8086:8d02
Block L#5 "sr0"
NUMANode L#1 (P#1 128GB)
Socket L#1 + L3 L#1 (20MB)
L2 L#8 (256KB) + L1d L#8 (32KB) + L1i L#8 (32KB) + Core L#8 + PU L#8 (P#1)
L2 L#9 (256KB) + L1d L#9 (32KB) + L1i L#9 (32KB) + Core L#9 + PU L#9 (P#3)
L2 L#10 (256KB) + L1d L#10 (32KB) + L1i L#10 (32KB) + Core L#10 + PU L#10 (P#5)
L2 L#11 (256KB) + L1d L#11 (32KB) + L1i L#11 (32KB) + Core L#11 + PU L#11 (P#7)
L2 L#12 (256KB) + L1d L#12 (32KB) + L1i L#12 (32KB) + Core L#12 + PU L#12 (P#9)
L2 L#13 (256KB) + L1d L#13 (32KB) + L1i L#13 (32KB) + Core L#13 + PU L#13 (P#11)
L2 L#14 (256KB) + L1d L#14 (32KB) + L1i L#14 (32KB) + Core L#14 + PU L#14 (P#13)
L2 L#15 (256KB) + L1d L#15 (32KB) + L1i L#15 (32KB) + Core L#15 + PU L#15 (P#15)
HostBridge L#7
PCIBridge
PCI 15b3:1003
Net L#6 "eth4"
Net L#7 "eth5"
NUMANode L # 0, tentu saja, CPU0 dan NUMANode L # 1 adalah CPU1. Anda kemudian dapat mengambil nomor PCI favorit Anda dari yang di atas, misalnya 14e4: 16a1, dan menemukan apa itu, dan alamat PCI-nya untuk analisis lebih lanjut dari lspci
:
# lspci -nn | grep 14e4:16a1
01:00.0 Ethernet controller [0200]: Broadcom Corporation BCM57840 NetXtreme II 10 Gigabit Ethernet [14e4:16a1] (rev 11)
01:00.1 Ethernet controller [0200]: Broadcom Corporation BCM57840 NetXtreme II 10 Gigabit Ethernet [14e4:16a1] (rev 11)
01:00.2 Ethernet controller [0200]: Broadcom Corporation BCM57840 NetXtreme II 10 Gigabit Ethernet [14e4:16a1] (rev 11)
01:00.3 Ethernet controller [0200]: Broadcom Corporation BCM57840 NetXtreme II 10 Gigabit Ethernet [14e4:16a1] (rev 11)
Di salah satu mesin saya, kartu Emulex Fibre Channel tidak muncul di lstopo
output. Saya menemukannya menggunakan lstopo --whole-io
, dengan melakukan proses pencarian terbalik (gulir ke kanan jika Anda harus, untuk melihat nomor hex 10df yang saya terima):
# lspci -nn | grep -i emulex
03:00.0 Fibre Channel [0c04]: Emulex Corporation Saturn-X: LightPulse Fibre Channel Host Adapter [10df:f100] (rev 03)
03:00.1 Fibre Channel [0c04]: Emulex Corporation Saturn-X: LightPulse Fibre Channel Host Adapter [10df:f100] (rev 03)
# lstopo --whole-io | grep 10df
PCI 10df:f100
PCI 10df:f100
Hapus perintah grep yang disalurkan, di atas, dan cari-cari melalui output semi-manual untuk menemukan perangkat dalam lstopo --whole-io
tampilan penuh (dibiarkan sebagai latihan untuk pembaca).
lspci -nn | grep PCINUMBER
membuatku bahagia. Saya memiliki dua Samsung 970 Pro dan perintah itu membantu saya mengidentifikasi mereka dari ltopo
output. Terima kasih.
numa_node = -1
danlocal_cpulist = 0-15
. Itu tidak benar, saya punya 2 numa node yang dikonfirmasi oleh hwloc.