Подготовка серверов для сквозной передачи 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.
Отмена отсоединения нескольких графических карт сервера
В файле
/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"
Сгенерируйте файл конфигурации GRUB.
Для системы с BIOS выполните:
# /usr/sbin/grub2-mkconfig -o /etc/grub2.cfgДля системы с UEFI выполните:
# /usr/sbin/grub2-mkconfig -o /etc/grub2-efi.cfg
Удалите файл
/etc/modprobe.d/blacklist-nouveau.conf.Пересоздайте загрузочный образ Linux, выполнив:
# dracut -f
Перезагрузите сервер, чтобы применить изменения:
# 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