GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ermitteln Sie den NUMA-Knoten des PCIe-Geräts

Sie müssen in das Verzeichnis des betreffenden PCIe-Steckplatzes gehen, zum Beispiel eth0 :

 cd /sys/class/net/eth0/device

wo Sie numa_node finden , local_cpus , und local_cpulist , die drei für Sie interessanten Dateien. Sie können einfach cat sie und sehen Sie sich die gewünschten Daten an.


Sie können auch hwloc (http://www.open-mpi.de/projects/hwloc/) verwenden, wenn Sie die Geräte-ID kennen. Wenn Sie jedoch zwei gleiche Geräte haben (z. B. GPUs), können Sie den NUMA-Knoten, dem der physische Steckplatz zugeordnet ist, nur im Motherboard-Handbuch nachlesen.

Für das Asus Z9PE-D8 (http://dlcdnet.asus.com/pub/ASUS/mb/LGA2011/Z9PE-D8-WS/Manual/e8726_z9pe-d8_ws.pdf) ist es auf Seite 223.


Die akzeptierte Antwort funktioniert, soweit ich gefunden habe, nur für Netzwerkkarten. Laut GuillermoMAs Antwort gibt Ihnen hwloc das wahre Geschäft, auch wenn es nicht so lesbar ist. lstopo befindet sich im hwloc-Paket (zumindest auf 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 ist natürlich CPU0 und NUMANode L#1 ist CPU1. Sie können dann Ihre bevorzugte PCI-Nummer von oben nehmen, z. B. 14e4:16a1, und herausfinden, was das ist, und ihre PCI-Adresse zur weiteren Analyse von 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)

Auf einem meiner Computer wurde eine Emulex Fibre Channel-Karte nicht in lstopo angezeigt Ausgang. Ich habe es mit lstopo --whole-io gefunden , indem Sie den Reverse-Lookup-Prozess durchführen (wenn Sie müssen, scrollen Sie nach rechts, um die 10df-Hex-Zahl zu sehen, nach der ich suche):

# 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

Entfernen Sie den geleiteten grep-Befehl oben und durchsuchen Sie die Ausgabe halbmanuell, um das Gerät im vollständigen lstopo --whole-io zu finden Anzeige (links als Übung für den Leser).


Linux
  1. Wie finde ich heraus, ob die NUMA-Konfiguration aktiviert oder deaktiviert ist?

  2. So erstellen Sie ein virtuelles Blockgerät (Loop-Gerät/Dateisystem) in Linux

  3. Deaktivieren/Aktivieren von Numa für virtuelle Maschinen (XEN-basiert)

  4. Woher weiß ich, ob mein Server über NUMA verfügt?

  5. Udev-Regel zur Übereinstimmung mit USB-Geräten mit mehreren Knoten

Eine SD-Karte replizieren?

Befehl zum Ermitteln der Ports eines Geräts (wie /dev/tttyusb0)?

Wie kann ich die Stromversorgung eines PCIe-Geräts zurücksetzen/aus- und wieder einschalten?

Linux – Bestimmen Sie die Größe eines Blockgeräts?

So installieren Sie Node.js unter Ubuntu 14.04

Wie kann ich feststellen, ob ein iscsi-gerät ein gemountetes Linux-Dateisystem ist?