Если в сервере установлено несколько 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
Еще вариант:
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 серверами сразу планируйте время на несколько разборок-сборок и перезагрузок сервера. Чем больше видеокарт в сервере, там больше времени может понадобиться.
