Перейти к основному содержанию

Linux — определить GPU видеокарту NVIDIA в сервере

NVIDIA A100

Если в сервере установлено несколько GPU карт, то может потребоваться определить какая именно видеокарта где установлена. Например, если нужно определить сбойную видеокарту и заменить её. Или извлечь для диагностики.

На самих картах (на примере NVIDIA) имеются серийные номера, однако, определить серийный номер видеокарты в Linux — задача почти невыполнимая.

Поле для серийного номера предусмотрено, но обычно пустое. Можно воспользоваться командой:

nvidia-smi --format=csv --query-gpu=name,serial,pci.bus_id

Получим:

NVIDIA GeForce RTX 4090, [N/A], 00000000:31:00.0
NVIDIA GeForce RTX 4090, [N/A], 00000000:4B:00.0
NVIDIA GeForce RTX 4090, [N/A], 00000000:B1:00.0
NVIDIA GeForce RTX 4090, [N/A], 00000000:CA:00.0

Вместо серийного номера в большинстве случаев получим [N/A].

Нам остаётся только одно, у каждой GPU карты имеется pci.bus_id — это идентификатор местоположения устройства на шине PCI/PCIe внутри сервера. Это адрес устройства, а не серийный номер или модель. Формат: pci.bus_id: domain:bus:device.function.

  • domain (домен, обычно 0000) — номер PCI-домена (редко используется в простых системах)
  • bus (шина) — номер шины PCI (00-FF)
  • device (устройство) — номер устройства на шине (00-1F)
  • function (функция) — номер функции устройства (0-7)

Для определения bus_id можно также использовать команду:

nvidia-smi
nvidia

Еще вариант:

sudo lspci -vnnk

В списке можно отыскать GPU, в самом начале указан адрес шины PCIe:

31:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:2684] (rev a1) (prog-if 00 [VGA controller])
       Subsystem: Gigabyte Technology Co., Ltd Device [1458:4104]
       Physical Slot: 85
       Flags: bus master, fast devsel, latency 0, IRQ 164, NUMA node 0
       Memory at af000000 (32-bit, non-prefetchable) [size=16M]
       Memory at 202fe0000000 (64-bit, prefetchable) [size=256M]
       Memory at 202ff0000000 (64-bit, prefetchable) [size=32M]
       I/O ports at 8000 [size=128]
       Expansion ROM at b0000000 [virtual] [disabled] [size=512K]
       Capabilities: [60] Power Management version 3
       Capabilities: [68] MSI: Enable+ Count=1/1 Maskable- 64bit+
       Capabilities: [78] Express Legacy Endpoint, MSI 00
       Capabilities: [b4] Vendor Specific Information: Len=14 <?>
       Capabilities: [100] Virtual Channel
       Capabilities: [258] L1 PM Substates
       Capabilities: [128] Power Budgeting <?>
       Capabilities: [420] Advanced Error Reporting
       Capabilities: [600] Vendor Specific Information: ID=0001 Rev=1 Len=024 <?>
       Capabilities: [900] Secondary PCI Express
       Capabilities: [bb0] Physical Resizable BAR
       Capabilities: [c1c] Physical Layer 16.0 GT/s <?>
       Capabilities: [d00] Lane Margining at the Receiver <?>
       Capabilities: [e00] Data Link Feature <?>
       Kernel driver in use: nvidia
       Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia

Есть и другие способы.

Зная адрес шины проблемного устройства можно по очереди извлекать GPU карты и смотреть, какое из устройств пропало из системы. Метод научного перетыка, так сказать. Естественно, с корректным выключением и включением сервера. Поэтому при планировании работ с GPU серверами сразу планируйте время на несколько разборок-сборок и перезагрузок сервера. Чем больше видеокарт в сервере, там больше времени может понадобиться.

Теги

 

Похожие материалы

Установка драйверов NVIDIA в Ubuntu

Наконец-то это случилось, вы потратили все деньги на неё — на видеокарту. Или две. И вставили её в компьютер. Или в сервер. В качестве операционной системы у меня Ubuntu Desktop 20.04.2 LTS. Ставим драйвера NVIDIA для нашей видеокарты.

Теги