GNU/Linux >> Tutoriales Linux >  >> Linux

Determinar el nodo NUMA del dispositivo PCIe

Debe ir al directorio de la ranura PCIe en cuestión, por ejemplo eth0 :

 cd /sys/class/net/eth0/device

donde encontrarás numa_node , local_cpus y local_cpulist , los tres archivos de su interés. Puedes simplemente cat y ver los datos deseados.


También puede usar hwloc (http://www.open-mpi.de/projects/hwloc/) si conoce la identificación del dispositivo. Sin embargo, si tiene 2 del mismo dispositivo (por ejemplo, GPU), la única forma de saber el nodo NUMA al que está asociada la ranura física es consultar el manual de la placa base.

Para el Asus Z9PE-D8 (http://dlcdnet.asus.com/pub/ASUS/mb/LGA2011/Z9PE-D8-WS/Manual/e8726_z9pe-d8_ws.pdf) está en la página 223.


La respuesta aceptada solo funciona para tarjetas de red, por lo que he encontrado. Según la respuesta de GuillermoMA, hwloc le dará el trato real incluso si no es tan legible. lstopo se encuentra en el paquete hwloc (al menos en 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 es, por supuesto, CPU0 y NUMANode L#1 es CPU1. Luego puede tomar su número PCI favorito de los anteriores, por ejemplo, 14e4:16a1, y descubrir qué es y su dirección PCI para un análisis más detallado 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)

En una de mis máquinas, una tarjeta Emulex Fibre Channel no apareció en el lstopo producción. Lo encontré usando lstopo --whole-io , realizando el proceso de búsqueda inversa (desplácese hacia la derecha si es necesario, para ver el número hexadecimal 10df que busco):

# 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

Elimine el comando grep canalizado, arriba, y hurgue en la salida de forma semimanual para encontrar el dispositivo en el lstopo --whole-io completo display (dejado como ejercicio para el lector).


Linux
  1. ¿Utilidad Bluetooth de bajo nivel?

  2. ¿Cómo reiniciar/ciclo de energía a un dispositivo PCIe?

  3. Linux:¿determinar el tamaño de un dispositivo de bloque?

  4. Conflictos de Node.js:/sbin/node Vs /usr/bin/node?

  5. Cómo deshabilitar/habilitar Numa para máquina virtual (basado en XEN)

¿Replicar una tarjeta SD?

Cómo instalar Node.js en Ubuntu 14.04

Cómo crear un dispositivo de bloque virtual (dispositivo de bucle/sistema de archivos) en Linux

¿Cómo sé si mi servidor tiene NUMA?

Determinar el tamaño de un dispositivo de bloque

Regla Udev para hacer coincidir el dispositivo USB de múltiples nodos