Настройка vGPU

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

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

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

  1. отредактировать в файле /etc/default/grub строку "GRUB_CMDLINE_LINUX", добавив параметры загрузки ядра "modprobe.blacklist=nouveau intel_iommu=on", чтобы получилась строка аналогичного вида:
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/rv-swap rd.lvm.lv=rv/root rd.lvm.lv=rv/swap modprobe.blacklist=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" в положение "Выкл.", нажать кнопку Сохранить (рисунок 275);

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

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

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

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

После установки для настройки драйвера vGPU для ВМ нужно выполнить следующие действия:

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

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

  1. запустить вновь ВМ.

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

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

На хосте с помощью утилиты 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 |
+-----------------------------------------------------------------------------+