web-dev-qa-db-fra.com

Déterminez le nœud Numa de périphérique PCIe

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?

9
user49531

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.

10
MariusMatutiae

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 .

3
GuillermoMA

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).

2
Mike S

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

0
Hem