Настройка vGPU

В данном разделе описывается процесс настройки vGPU на примере NVIDIA RTX A6000.

Настройка системных параметров хоста

Все нижеперечисленные действия выполняются в консоли хоста с подключенным vGPU. Также для упрощения настройки загрузчика GRUB необходимо, чтобы хост не был подключен к системе управления средой виртуализации.

  1. Отредактируйте в файле /etc/default/grub строку GRUB_CMDLINE_LINUX, добавив параметры загрузки ядра "rdblacklist=nouveau intel_iommu=on", чтобы получилась строка аналогичного вида:
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/rv-swap rd.lvm.lv=rv/root rd.lvm.lv=rv/swap rdblacklist=nouveau intel_iommu=on loglevel=4"
  1. Обновите конфигурацию загрузчика GRUB, выполнив одну из команд в зависимости от типа используемой системы загрузки:
  • для UEFI:
grub2-mkconfig -o /boot/efi/EFI/rosa/grub.cfg
  • для BIOS:
grub2-mkconfig -o /boot/grub2/grub.cfg
  1. Для установки драйверов:
  • Включите репозиторий DVD и cмонтировать диск в директорию /mnt:
dnf config-manager --set-enabled DVD
mount -t iso9660 -o ro /dev/sr0 /mnt
  • Установите пакеты с драйверами и включить сервисы:
dnf install nvidia-vgpu-kvm nvidia-vgpu-kvm-kmod
systemctl enable nvidia-vgpu-mgr.service
systemctl enable nvidia-vgpud.service
  • Перезагрузите хост.
  1. Проверьте, с какими параметрами загрузилось ядро. Это действие можно выполнить с помощью команд:
dmesg | grep "Command line"
cat /proc/cmdline
  1. Проверьте, какие модули ядра используются для vGPU с помощью команд:
  • lspci:
lspci -knn | grep -A 15 NVIDIA
41:00.0 3D controller [0302]: NVIDIA Corporation Device [10de:26b1] (rev a1)
Subsystem: NVIDIA Corporation Device [10de:16a1]
Kernel driver in use: nvidia
Kernel modules: nouveau, nvidia_vgpu_vfio, nvidia
  • lsmod:
lsmod | grep -E 'vfio|nvidia'
nvidia_vgpu_vfio   65536 0
nvidia          35315712  11
vfio_mdev          16384  0
mdev               24576  2 vfio_mdev,nvidia_vgpu_vfio
vfio_iommu_type1   36864  0
vfio               36864  3 vfio_mdev,nvidia_vgpu_vfio,vfio_iommu_type1
drm               577536  7 drm_kms_helper,drm_vram_helper,ast,nvidia,drm_ttm_helper,ttm

Если установка драйвера прошла успешно, то вывод утилиты nvidia-smi будет аналогичного вида:

nvidia-smi
Mon Aug 21 16:55:38 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.82       Driver Version: 470.82       CUDA Version: N/A      |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA A16          On   | 00000000:45:00.0 Off |                    0 |
|  0%   39C    P8    15W /  62W |      0MiB / 15105MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
  1. Создайте файл /etc/cron.d/sriov-manage со следующим содержанием:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
@reboot root sleep 60 && /usr/lib/nvidia/sriov-manage -e ALL > /dev/null 2>&1
  1. Перезагрузите хост. Если всё прошло успешно, то после перезагрузки можно увидеть список доступных vGPU в системе:
lspci | grep NVIDIA
41:00.0 3D controller: NVIDIA Corporation Device 26b1 (rev a1)
41:00.4 3D controller: NVIDIA Corporation Device 26b1 (rev a1)
41:00.5 3D controller: NVIDIA Corporation Device 26b1 (rev a1)
41:00.6 3D controller: NVIDIA Corporation Device 26b1 (rev a1)
41:00.7 3D controller: NVIDIA Corporation Device 26b1 (rev a1)
41:01.0 3D controller: NVIDIA Corporation Device 26b1 (rev ff)
41:01.1 3D controller: NVIDIA Corporation Device 26b1 (rev ff)
41:01.2 3D controller: NVIDIA Corporation Device 26b1 (rev ff)
41:01.3 3D controller: NVIDIA Corporation Device 26b1 (rev ff)
41:01.4 3D controller: NVIDIA Corporation Device 26b1 (rev ff)
41:01.5 3D controller: NVIDIA Corporation Device 26b1 (rev ff)
41:01.6 3D controller: NVIDIA Corporation Device 26b1 (rev ff)
41:01.7 3D controller: NVIDIA Corporation Device 26b1 (rev ff)
41:02.0 3D controller: NVIDIA Corporation Device 26b1 (rev ff)
41:02.1 3D controller: NVIDIA Corporation Device 26b1 (rev ff)
41:02.2 3D controller: NVIDIA Corporation Device 26b1 (rev ff)
41:02.3 3D controller: NVIDIA Corporation Device 26b1 (rev ff)
41:02.4 3D controller: NVIDIA Corporation Device 26b1 (rev ff)
41:02.5 3D controller: NVIDIA Corporation Device 26b1 (rev ff)
41:02.6 3D controller: NVIDIA Corporation Device 26b1 (rev ff)
41:02.7 3D controller: NVIDIA Corporation Device 26b1 (rev ff)
41:03.0 3D controller: NVIDIA Corporation Device 26b1 (rev ff)
41:03.1 3D controller: NVIDIA Corporation Device 26b1 (rev ff)
41:03.2 3D controller: NVIDIA Corporation Device 26b1 (rev ff)
41:03.3 3D controller: NVIDIA Corporation Device 26b1 (rev ff)
41:03.4 3D controller: NVIDIA Corporation Device 26b1 (rev ff)
41:03.5 3D controller: NVIDIA Corporation Device 26b1 (rev ff)
41:03.6 3D controller: NVIDIA Corporation Device 26b1 (rev ff)
41:03.7 3D controller: NVIDIA Corporation Device 26b1 (rev ff)
41:04.0 3D controller: NVIDIA Corporation Device 26b1 (rev ff)
41:04.1 3D controller: NVIDIA Corporation Device 26b1 (rev ff)
41:04.2 3D controller: NVIDIA Corporation Device 26b1 (rev ff)
41:04.3 3D controller: NVIDIA Corporation Device 26b1 (rev ff)
  1. Подключите хост к СУСВ стандартным способом, используя Портал Администрирования.

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

На следующем шаге настройки необходимо создать виртуальную машину и установить гостевую ОС стандартным способом:

  1. Выключите ВМ и на портале администрирования в разделе "Ресурсы ‒ Виртуальные машины" откройте окно со свойствами настраиваемой ВМ, нажав на ссылку в поле "Имя".
  2. Перейдите на вкладку "Устройства хоста" и нажмите кнопку Управление vGPU.
  3. В открывшемся окне выберите vGPU, которое будет подключено к виртуальной машине, переведите переключатель "Вторичный видеоадаптер для VNC" в положение "Выкл.", нажмите кнопку Сохранить (рисунок 186).

Рисунок 186 ‒ Настройка vGPU

  1. Запустите ВМ и подключитесь к SPICE консоли для установки vGPU драйвера. Диспетчер устройств до установки драйвера не будет отображать подключенных видеоадаптеров, как указано на рисунке 187.

Рисунок 187 ‒ Диспетчер устройств до установки vGPU драйвера

Настройка драйвера vGPU для ВМ

После установки для настройки драйвера vGPU для ВМ:

  1. Выключите ВМ, вновь откройте окно "Управление vGPU" и переведите переключатель "Вторичный видеоадаптер для VNC" в положение "Вкл." (рисунок 188).

Рисунок 188 ‒ Активация параметра "Вторичный видеоадаптер для VNC"

  1. Запустите вновь виртуальную машину. В диспетчере устройств должен появиться соответствующий видеоадаптер (рисунок 189).

Рисунок 189 ‒ Отображение подключенного видеоустройства в "Диспетчере устройств"

На хосте с помощью утилиты nvidia-smi можно отслеживать используемые ресурсы vGPU:

nvidia-smi
Tue Aug 22 10:04:45 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.82       Driver Version: 470.82       CUDA Version: N/A      |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA A16          On   | 00000000:45:00.0 Off |                    0 |
|  0%   37C    P8    15W /  62W |   3648MiB / 15105MiB |     10%      Default |
|                               |                      |                  N/A |
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A    274838    C+G   vgpu                             3648MiB |
+-----------------------------------------------------------------------------+