En supposant que le système d'exploitation Linux assez récent, il existe un moyen facile de déterminer à quel nœud numa le logement PCIe, où un appareil est branché, appartient?
Vous devez aller dans le répertoire de la machine à sous PCIe en question, par exemple eth0
:
cd /sys/class/net/eth0/device
où vous trouverez numa_node
, local_cpus
, et local_cpulist
, les trois fichiers d'intérêt pour vous. Vous pouvez simplement cat
eux et voir les données souhaitées.
Vous pouvez également utiliser HWLOC ( http://www.open-mpi.de/projects/hwloc/ ) si vous connaissez l'ID de périphérique. Toutefois, si vous avez 2 du même périphérique (par exemple, GPU), le seul moyen de connaître le nœud Numa où le logement physique est associé à un coup d'œil au manuel de la carte mère.
Pour l'ASUS Z9PE-D8 ( http://dlcdnet.asus.com/pub/asus/mb/lga2011/z9pe-d8-ws/manual/e8726_z9pe-d8_ws.pdf ) c'est dans la page 223 .
La réponse acceptée ne fonctionne que pour les cartes réseau, aussi loin que j'ai trouvées. La réponse de Guillermome, HWLOC vous donnera la vraie affaire même si ce n'est pas aussi lisible. lstopo
se trouve dans le paquet HWLOC (au moins sur 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 est, bien sûr, CPU0 et Numanode L # 1 est CPU1. Vous pouvez ensuite prendre votre numéro PCI préféré de ce qui précède, par exemple 14E4: 16A1 et découvrez ce qu'il est, et son adresse PCI pour une analyse plus poussée de 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)
Sur l'une de mes machines, une carte de canal de fibre émulex ne s'est pas présentée dans la sortie lstopo
. J'ai trouvé ça en utilisant lstopo --whole-io
, en effectuant le processus de recherche inversée (faites défiler jusqu'à la droite si vous devez, pour voir le numéro hexagonal 10DF que j'ai grep pour):
# 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
Retirez la commande Grep de la pipée, ci-dessus et fouiller à travers la sortie semi-manuellement pour trouver le périphérique en totalité lstopo --whole-io
Affichage (à gauche en tant qu'exercice pour le lecteur).
On peut utiliser: # cat /sys/bus/pci/devices/<PCI device>/numa_node
Obtenez une adresse de périphérique PCI à l'aide de # lspci -nn