Подготовка серверов для сквозной передачи GPU

Подготовка серверов для сквозной передачи GPU#

Для сквозной передачи GPU отсоедините графические карты, которые необходимо присоединить к виртуальным машинам сервера, а затем включите поддержку IOMMU. Можно отсоединять сразу несколько графических карт с одинаковыми VID (идентификатор производителя) и PID (идентификатор продукта), а также отсоединять только отдельные графические карты, используя их PCI-адреса.

Если были отсоединены несколько графических карт сервера с помощью pci-helper.py detach, но необходимо использовать только одну из них для сквозной передачи, нужно отменить отсоединение и отсоединить необходимую графическую карту с помощью pci-helper.py bind-to-stub. В этом случае остальные графические карты сервера можно использовать для предоставления виртуальных графических карт.

Отсоединение нескольких графических карт сервера

Выведите список всех графических карт сервера и получите их VID и PID:

# lspci -nnD | grep NVIDIA
0000:01:00.0 3D controller [0302]: NVIDIA Corporation TU104GL [Tesla T4] [10de:1eb8] (rev a1)
0000:81:00.0 3D controller [0302]: NVIDIA Corporation TU104GL [Tesla T4] [10de:1eb8] (rev a1)

[10de:1eb8] содержит VID и PID графической карты.

Запустите сценарий pci-helper.py detach, чтобы отсоединить все графические карты с одинаковыми VID и PID. Для графических карт NVIDIA дополнительно внесите в черный список драйвер Nouveau. Например:

# /usr/libexec/vstorage-ui-agent/bin/pci-helper.py detach 10de:1eb8 --blacklist-nouveau

Эта команда отсоединяет графические карты сервера, у которых VID:PID — это 10de:1eb8, а также выключает загрузку драйвера Nouveau.

Отмена отсоединения нескольких графических карт сервера

  1. В файле /etc/sysconfig/grub найдите переменную GRUB_CMDLINE_LINUX, а затем удалите pci-stub.ids=<gpu_vid>:<gpu_pid> rd.driver.blacklist=nouveau nouveau.modeset=0 из ее значения. Получившийся файл будет выглядеть следующим образом:

    # cat /etc/sysconfig/grub | grep CMDLINE
    GRUB_CMDLINE_LINUX="crashkernel=auto tcache.enabled=0 quiet iommu=pt"
    
  2. Сгенерируйте файл конфигурации GRUB.

    • Для системы с BIOS выполните:

      # /usr/sbin/grub2-mkconfig -o /etc/grub2.cfg
      
    • Для системы с UEFI выполните:

      # /usr/sbin/grub2-mkconfig -o /etc/grub2-efi.cfg
      
  3. Удалите файл /etc/modprobe.d/blacklist-nouveau.conf.

  4. Пересоздайте загрузочный образ Linux, выполнив:

    # dracut -f
    
  5. Перезагрузите сервер, чтобы применить изменения:

    # reboot
    

Отсоединение отдельной графической карты сервера

Получите список всех графических карт сервера и узнайте их PCI-адреса:

# lspci -nnD | grep NVIDIA
0000:01:00.0 3D controller [0302]: NVIDIA Corporation TU104GL [Tesla T4] [10de:1eb8] (rev a1)
0000:81:00.0 3D controller [0302]: NVIDIA Corporation TU104GL [Tesla T4] [10de:1eb8] (rev a1)

0000:01:00.0 и 0000:81:00.0 — это PCI-адреса графических карт.

Выполните сценарий pci-helper.py bind-to-stub, чтобы назначить драйвер pci-stub графической карте по ее PCI-адресу. Например:

# /usr/libexec/vstorage-ui-agent/bin/pci-helper.py bind-to-stub 0000:01:00.0

Эта команда отсоединяет графическую карту сервера с PCI-адресом 0000:01:00.0 и выключает загрузку драйвера Nouveau.

Включение поддержки IOMMU на сервере

Выполните сценарий pci-helper.py, а затем перезагрузите сервер, чтобы применить изменения:

# /usr/libexec/vstorage-ui-agent/bin/pci-helper.py enable-iommu
# reboot

Сценарий работает как для процессоров Intel, так и для AMD.

Проверить успешное включение поддержки IOMMU можно в выводе dmesg:

# dmesg | grep -e DMAR -e IOMMU
[    0.000000] DMAR: IOMMU enabled