Назначение виртуальных графических процессоров (zVirt 3.X)

В этом документе описывается, как разделить одну видеокарту NVIDIA (с графическим процессором (GPU)), размещенную на хосте, на несколько видеокарт (vGPU). Данная процедура необходима для запуска множества виртуальных машин в zVirt (на одной физической видеокарте) для выполнения графически требовательных задач и программного обеспечения, которое не может работать без GPU.

  1. nouveau - проект по созданию свободных драйверов для видеокарт компании Nvidia с поддержкой ускорения трёхмерной графики.

  2. GPU - отдельное устройство персонального компьютера или игровой приставки, выполняющее графический рендеринг.

  3. vGPU - это технология ускорения графики, которая обеспечивает разделение ресурсов одного графического процессора между несколькими ВМ.

  4. IOMMU - блок управления памятью для операций ввода-вывода. Так же как традиционный, процессорный блок управления памятью, который переводит виртуальные адреса, видимые процессором в физические, этот блок занимается трансляцией виртуальных адресов, видимых аппаратным устройством, в физические адреса.

1. Предисловие

Установка карт NVIDIA на физических серверах, работающей на основе zVirt обеспечивает высокую производительность графических возможностей приложений по сравнению с возможностями сред без аппаратного ускорения. Эта технология идеально подходит для сценариев использования, связанных с большим объемом графических данных, например в работе дизайнеров, архитекторов, инженеров, в области высшего образования, в нефтегазовой промышленности, в здравоохранении, а также в работе привилегированных пользователей, которым требуется доступ к интерфейсам двухмерных и трехмерных графических данных.

В данном руководстве будет рассмотрен режим vGPU (Virtual GPU). Вы можете разделить физическое устройство GPU на одно или несколько виртуальных устройств, называемых опосредованными устройствами. Затем эти опосредованные устройства можно назначить одной или нескольким виртуальным машинам в качестве виртуальных GPU. Эти виртуальные машины совместно используют производительность одного физического GPU. Для некоторых GPU только одно опосредованное устройство может быть назначено одному гостю. Поддержка vGPU доступна только для некоторых NVIDIA GPU.

Пример 1. Распределение vGPU

У хоста есть четыре GPU. Каждый GPU может поддерживать до 16 vGPU, в общей сложности 64 vGPU. Возможны следующие варианты назначения vGPU:

одна виртуальная машина с 64 vGPU 64 виртуальные машины, каждая с одним vGPU 32 виртуальные машины, каждая с одним vGPU; 8 виртуальных машин, каждая с двумя vGPU; 4 виртуальные машины, каждая с четырьмя vGPU

vgpu1
Необходимые условия:
  • Ваше GPU устройство поддерживает функциональность виртуального GPU (vGPU).

  • Ваша система входит в список проверенных серверных аппаратных платформ. Подробнее о поддерживаемых GPU и подтвержденных платформах смотрите в разделе СЕРТИФИЦИРОВАННЫЕ СЕРВЕРЫ NVIDIA vGPU.

  • Чипсет хоста поддерживает Intel VT-d или AMD-Vi.

2. Предварительные действия, выполняемые на хосте

Данная инструкция протестирована на базе zVirt 3.0 (zVirt Node).

Для дальнейшей настройки vGPU необходимо выполнить следующие действия на хосте:

  • Включить Passthrough устройств хоста и SR-IOV.

  • Включить перераспределение PCI устройств.

  • Заблокировать драйвер Nouveau.

Рассмотрим подробнее.

  1. Убедитесь, что видеокарта корректно отображается на хосте zVirt. Например, имя этого хоста host-gpu. Для этого:

    1. Перейдите Ресурсы  Хосты.

    2. Нажмите на имя хоста (в примере - host-gpu) для перехода в подробное представление.

    3. Перейдите на вкладку Устройства Хоста.

    hostcard1
  2. Переведите хост host-gpu в обслуживание. Для этого:

    1. Перейдите Ресурсы  Хосты.

    2. Выделите нужный хост (в примере - host-gpu)

    3. Нажмите Управление > Обслуживание.

  3. Подключитесь по SSH к данному хосту. Выполните вывод содержимого файла /proc/cmdline. Пример вывода файла:

    cat /proc/cmdline
    
    OOT_IMAGE=(hd0,msdos1)//zvirt-node-ng-3.0-0.20220410.0+1/vmlinuz-4.18.0-373.el8.x86_64 crashkernel=auto resume=/dev/mapper/znn-swap rd.lvm.lv=znn/zvirt-node-ng-3.0-0.20220410.0+1 rd.lvm.lv=znn/swap rhgb quiet root=/dev/znn/zvirt-node-ng-3.0-0.20220410.0+1 boot=UUID=d802e2a5-b7d8-4c6a-b24a-625bfd971da7 rootflags=discard img.bootid=zvirt-node-ng-3.0-0.20220410.0+1
  4. Последовательно выполните две команды для внесения nouveau в список заблокированных драйверов.

    grubby --update-kernel=ALL --args="rd.driver.blacklist=nouveau"
    grubby --update-kernel=ALL --args="nouveau.modeset=0"
  5. Выполните команду, которая позволит добавлять физические устройства в гостевые ОС: режим Passthrough устройств хоста и SR-IOV. Для процессоров на базе Intel и AMD команды будут отличаться.

    • Intel

      grubby --update-kernel=ALL --args="intel_iommu=on"
    • AMD

      grubby --update-kernel=ALL --args="amd_iommu=on"
  6. Выполните команду, которая позволяет осуществлять временное перераспределение ресурсов и отключает динамическое перераспределение.

    grubby --update-kernel=ALL --args="pci=realloc"
  7. Добавьте драйвер nouveau в blacklist. Для этого создайте файл blacklist-nouveau.conf и добавьте в него следующую информацию:

    nano /etc/modprobe.d/blacklist-nouveau.conf
    
    # add to the end (create new if it does not exist)
    blacklist nouveau
    options nouveau modeset=0
  8. Сгенерируйте новую конфигурацию файла grub и перезагрузитесь, выполнив команды:

    dracut --force
    reboot
  9. После перезагрузки, проверьте, что драйвер nouveau не используется. Для этого выполните команду:

    lsmod | grep nouveau
  10. После перезапуска хоста, проверьте, что в файле /proc/cmdline появились добавленные ранее данные. Например:

    BOOT_IMAGE=(hd0,gpt2)//zvirt-node-ng-3.0-0.20220410.0+1/vmlinuz-4.18.0-373.el8.x86_64 crashkernel=auto resume=/dev/mapper/znn-swap rd.lvm.lv=znn/zvirt-node-ng-3.0-0.20220410.0+1 rd.lvm.lv=znn/swap rhgb quiet root=/dev/znn/zvirt-node-ng-3.0-0.20220410.0+1 boot=UUID=e65ca870-eaac-439f-943a-56ed524d1e4f rootflags=discard img.bootid=zvirt-node-ng-3.0-0.20220410.0+1 rd.driver.blacklist=nouveau nouveau.modset=0 intel_iommu=on pci=realloc

3. Установка пакетов на хост

Необходимо установить дополнительные пакеты на хост. Если на сервере имеется доступ в интернет, то порядок действий будет следующим:

  1. Убедитесь, что включены репозитории centos-zvirt-main и centos-zvirt-extras:

    dnf repolist all
    repo enabled

    Если указанные репозитории по каким-то причинам отключены, их можно включить следующей командой

    dnf config-manager --enable *zvirt*
  2. При необходимости настройте доступ в репозиторий:

    zvirt-credentials -u USERNAME -p PASSWORD
  3. Определите, какая версия ядра используется. Для этого выполните команду uname -a

    uname -a
    
    Linux server 4.18.0-373.el8.x86_64 #1 SMP Tue Mar 22 15:11:47 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

    В текущем примере используется версия на базе 4.18.0-373.el8.

  4. На основе версии, выясненной на предыдущем шаге выполните команду для установки и скачивания kernel-devel и kernel-headers. Например:

    dnf install kernel-devel-4.18.0-373.el8 kernel-headers-4.18.0-373.el8
  5. Установите средства разработки, с помощью команды:

    dnf install libglvnd-devel elfutils-libelf-devel zlib-devel gcc make --nobest
  6. Скачайте пакет с драйверами для RHEL 8.6 и разместите их на сервере. Ссылка для скачивания на сайте NVIDIA (требуется регистрация).

  7. Установите драйвер на хост. Для этого выполните команду rpm -i имя_драйвера. Например:

    rpm -i NVIDIA-vGPU-rhel-8.6-450.236.03.x86_64.rpm
    
    Preparing packages for installation...
    NVIDIA-vGPU-rhel-8.6-450.236.03
  8. Выключите сторонние репозитории:

    dnf config-manager --disable appstream baseos epel extras appstream-source baseos-source extras-source ha powertools
  9. Перезапустите хост командой reboot.

  10. Выведите хост из обслуживания. Для этого:

    1. Перейдите в Ресурсы  Хосты

    2. Выделите нужный хост (в примере - host-gpu)

    3. Нажмите Управление > Включить.

4. Проверка корректности установки

  1. Убедитесь, что программный пакет NVIDIA vGPU установлен и правильно загружен, присутствуют драйвера VFIO в списке загруженных модулей ядра. Для этого выполните команду lsmod | grep vfio. Например:

    lsmod | grep vfio
    
    nvidia_vgpu_vfio       57344  0
    nvidia              19804160  10 nvidia_vgpu_vfio
    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
  2. Проверьте, что сервисы libvirtd и nvidia-vgpu-mgr.service запущены.

    service libvirtd status
    
    Redirecting to /bin/systemctl status libvirtd.service
    ● libvirtd.service - Virtualization daemon
       Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
      Drop-In: /etc/systemd/system/libvirtd.service.d
               └─unlimited-core.conf
       Active: active (running) since Tue 2023-05-02 16:16:17 MSK; 35min ago
         Docs: man:libvirtd(8)
               https://libvirt.org
     Main PID: 4257 (libvirtd)
        Tasks: 19 (limit: 32768)
       Memory: 60.3M
       CGroup: /system.slice/libvirtd.service
               └─4257 /usr/sbin/libvirtd
    
    мая 02 16:16:17 sup-2029-06.vlab.ocs.ru systemd[1]: Starting Virtualization daemon...
    мая 02 16:16:17 sup-2029-06.vlab.ocs.ru systemd[1]: Started Virtualization daemon.
    systemctl status nvidia-vgpu-mgr.service
    
    ● nvidia-vgpu-mgr.service - NVIDIA vGPU Manager Daemon
       Loaded: loaded (/usr/lib/systemd/system/nvidia-vgpu-mgr.service; enabled; vendor preset: disabled)
       Active: active (running) since Tue 2023-05-02 16:15:16 MSK; 49min ago
      Process: 3421 ExecStart=/usr/bin/nvidia-vgpu-mgr (code=exited, status=0/SUCCESS)
     Main PID: 3429 (nvidia-vgpu-mgr)
        Tasks: 1 (limit: 3297650)
       Memory: 404.0K
       CGroup: /system.slice/nvidia-vgpu-mgr.service
               └─3429 /usr/bin/nvidia-vgpu-mgr
    
    мая 02 16:15:16 sup-2029-06.vlab.ocs.ru systemd[1]: Starting NVIDIA vGPU Manager Daemon...
    мая 02 16:15:16 sup-2029-06.vlab.ocs.ru systemd[1]: Started NVIDIA vGPU Manager Daemon.
    мая 02 16:15:17 sup-2029-06.vlab.ocs.ru nvidia-vgpu-mgr[3429]: notice: vmiop_env_log: nvidia-vgpu-mgr daemon started
  3. Убедитесь, что драйвер NVIDIA успешно взаимодействует с физическим GPU, выполнив команду nvidia-smi. Например:

    nvidia-smi
    
    Tue May  2 16:52:14 2023
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 450.236.03   Driver Version: 450.236.03   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  Tesla P4            On   | 00000000:D8:00.0 Off |                  Off |
    | N/A   38C    P8    12W /  75W |     21MiB /  8191MiB |      0%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
    
    +-----------------------------------------------------------------------------+
    | Processes:                                                                  |
    |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
    |        ID   ID                                                   Usage      |
    |=============================================================================|
    |  No running processes found                                                 |
    +-----------------------------------------------------------------------------+

4.1. Проблемы после установки пакета(не появились необходимые драйвера и т.д)

  1. Необходим файл …​vgpu-kvm.run, например, NVIDIA-Linux-x86_64-510.47.03-vgpu-kvm.run

  2. Переместите его на хост в одну директорию с rpm файлом.

  3. Выдайте права на запуск: chmod +x NVIDIA-Linux-x86_64-510.47.03-vgpu-kvm.run

  4. Запустите: sh /path_to_file/NVIDIA-Linux-x86_64-510.47.03-vgpu-kvm.run

5. Добавление vGPU к виртуальной машине

  1. Определите идентификаторы устройства mdev_type для vGPU. Для этого выполните на хосте команду:

    vdsm-client Host hostdevListByCaps | grep -i nvidia -A 10 -B 10
    
                "capability": "pci",
                "driver": "nvidia",
                "iommu_group": "162",
                "is_assignable": "true",
                "mdev": {
                    "nvidia-157": {
                        "available_instances": "4",
                        "description": "num_heads=4, frl_config=45, framebuffer=2048M, max_resolution=5120x2880, max_instance=4",
                        "name": "GRID P4-2B"
                    },
                    "nvidia-214": {
                        "available_instances": "4",
                        "description": "num_heads=4, frl_config=45, framebuffer=2048M, max_resolution=5120x2880, max_instance=4",
                        "name": "GRID P4-2B4"
                    },
                    "nvidia-243": {
                        "available_instances": "8",
                        "description": "num_heads=4, frl_config=45, framebuffer=1024M, max_resolution=5120x2880, max_instance=8",
                        "name": "GRID P4-1B4"
                    },
                    "nvidia-288": {
                        "available_instances": "2",
                        "description": "num_heads=1, frl_config=60, framebuffer=4096M, max_resolution=4096x2160, max_instance=2",
                        "name": "GRID P4-4C"
                    },
                    "nvidia-289": {
                        "available_instances": "1",
                        "description": "num_heads=1, frl_config=60, framebuffer=8192M, max_resolution=4096x2160, max_instance=1",
                        "name": "GRID P4-8C"
                    },
                    "nvidia-63": {
                        "available_instances": "8",
                        "description": "num_heads=4, frl_config=60, framebuffer=1024M, max_resolution=5120x2880, max_instance=8",
                        "name": "GRID P4-1Q"
                    },
                    "nvidia-64": {
                        "available_instances": "4",
                        "description": "num_heads=4, frl_config=60, framebuffer=2048M, max_resolution=7680x4320, max_instance=4",
                        "name": "GRID P4-2Q"
                    },
                    "nvidia-65": {
                        "available_instances": "2",
                        "description": "num_heads=4, frl_config=60, framebuffer=4096M, max_resolution=7680x4320, max_instance=2",
                        "name": "GRID P4-4Q"
                    },
                    "nvidia-66": {
                        "available_instances": "1",
                        "description": "num_heads=4, frl_config=60, framebuffer=8192M, max_resolution=7680x4320, max_instance=1",
                        "name": "GRID P4-8Q"
                    },
                    "nvidia-67": {
                        "available_instances": "8",
                        "description": "num_heads=1, frl_config=60, framebuffer=1024M, max_resolution=1280x1024, max_instance=8",
                        "name": "GRID P4-1A"
                    },
                    "nvidia-68": {
                        "available_instances": "4",
                        "description": "num_heads=1, frl_config=60, framebuffer=2048M, max_resolution=1280x1024, max_instance=4",
                        "name": "GRID P4-2A"
                    },
                    "nvidia-69": {
                        "available_instances": "2",
                        "description": "num_heads=1, frl_config=60, framebuffer=4096M, max_resolution=1280x1024, max_instance=2",
                        "name": "GRID P4-4A"
                    },
                    "nvidia-70": {
                        "available_instances": "1",
                        "description": "num_heads=1, frl_config=60, framebuffer=8192M, max_resolution=1280x1024, max_instance=1",
                        "name": "GRID P4-8A"
                    },
                    "nvidia-71": {
                        "available_instances": "8",
                        "description": "num_heads=4, frl_config=45, framebuffer=1024M, max_resolution=5120x2880, max_instance=8",
                        "name": "GRID P4-1B"
                    }
                },
                "numa_node": "1",
                "parent": "pci_0000_d7_00_0",
                "product": "GP104GL [Tesla P4]",
                "product_id": "0x1bb3",
                "vendor": "NVIDIA Corporation",
                "vendor_id": "0x10de"
            }
        },
  2. Наименование для zVirt (например nvidia-157) соотносится с профилем от NVIDIA GRID P4-2B. Подробнее обо всех профилях можно узнать на сайте NVIDIA. Для текущего примера возьмем профиль nvidia-157, который поддерживает работу максимум 4 vGPUs на 1 физический GPU.

  3. Подключитесь к порталу администрирования zVirt, выберите ВМ, куда будет подключен vGPU. ВМ должна быть выключена. Для ВМ должен быть настроен запуск на хосте, куда подключена видеокарта.

  4. Подключитесь к порталу администрирования zVirt

  5. Перейдите в Ресурсы  Виртуальные машины

  6. Выделите нужную ВМ и нажмите Изменить

  7. Перейдите на вкладку Доп.параметры.

  8. Выберите ключ с типом mdev_type и впишите ранее выбранный профиль, например nvidia-157.

  9. Нажмите ОК

mdev1

5.1. Не отображаются Типы mdev

Если типы mdev не отображаются, выполните следующие действия:

  1. Создайте директорию со скриптом:

    mkdir -p /opt/script/
  2. Перейдите в нее:

    cd /opt/script/
  3. Создайте скрипт-файл

    vi /opt/script/startup-sriov-manage.sh
  4. Внесите в него следующее содержимое:

    #!/bin/bash
    # Далее используется вывод содержимого lspci | grep -i nvidia
    /usr/lib/nvidia/sriov-manage -e 0000:af:00
  5. Установите необходимые права:

    chmod 777 /opt/script/startup-sriov-manage.sh
  6. Создайте systemd unit:

    vi /etc/systemd/system/run-at-startup.service
  7. Внесите в него следующее содержимое:

    [Unit]
    Description=Run script for nvidia
    After=default.target
    
    [Service]
    Type=simple
    RemainAfterExit=yes
    ExecStart=/opt/script/startup-sriov-manage.sh
    TimeoutStartSec=60
    
    [Install]
    WantedBy=default.target
  8. Запустите команду для сканирования изменений в юнитах systemd:

    systemctl daemon-reload
  9. Добавьте юнит в автозапуск:

    systemctl enable --now run-at-startup

6. Установка драйвера на ВМ

Проверьте, что ВМ расположена на хосте с vGPU, включите ВМ. Установите драйвера для ОС (Ссылка для поиска и скачивания нужных драйверов)

6.1. Установка драйвера на ВМ на базе Windows.

  1. Загрузите драйвер на ВМ. Запустите установку драйвера. После установки выполните перезагрузку из Zvirt

    Выключение виртуальной машины из гостевой операционной системы Windows иногда переводит виртуальную машину в спящий режим, который не полностью очищает память, что может привести к последующим проблемам. Использование портала администрирования или портала VM для выключения виртуальной машины заставляет ее полностью очистить память.
    При работе с помощью протокола SPICE не отображается курсор. Рекомендуем воспользоваться сторонними протоколами: RDP, VNC. Если необходимо использовать SPICE, рекомендуем добавить в файл concole.vv значение SPICE_DEBUG_CURSOR=1
  2. Видеокарта будет корректно отображаться в Диспетчере устройств, графических приложениях.

nvidiafrid 1
nvidiafrid 2
nvidiafrid 3
nvidiafrid 4

6.2. Установка драйвера на ВМ на базе Linux.

  1. Запустите ВМ. Установите гостевые дополнения на ВМ, если они не были установлены ранее. Произведите обновление системы, выполнив команду, например dnf update -y (для CentOS 8 Stream). Установите пакеты, необходимые для работы:

    • Установка при наличии доступа в интернет:

      dnf -y install kernel-devel kernel-headers elfutils-libelf-devel zlib-devel gcc make
    • При отсутствии доступа в интернет необходимо скачать пакеты для CentOS 8 Stream и произвести их установку:

      rpm -ivh  --nodeps *.*
  2. Проверьте, используется ли драйвер nouveau на виртуальной машине. Для этого выполните команду lsmod | grep nouveau.

    lsmod | grep nouveau
    
    nouveau              2355200  0
    mxm_wmi                16384  1 nouveau
    wmi                    32768  2 mxm_wmi,nouveau
    video                  53248  1 nouveau
    i2c_algo_bit           16384  1 nouveau
    drm_display_helper    151552  1 nouveau
    drm_ttm_helper         16384  2 qxl,nouveau
    ttm                    81920  3 qxl,drm_ttm_helper,nouveau
    drm_kms_helper        167936  5 qxl,drm_display_helper,nouveau
    drm                   577536  7 drm_kms_helper,qxl,drm_display_helper,drm_ttm_helper,ttm,nouveau
  3. Добавьте драйвер nouveau в blacklist. Для этого создайте файл blacklist-nouveau.conf и добавьте в него следующую информацию:

    nano /etc/modprobe.d/blacklist-nouveau.conf
    
    # add to the end (create new if it does not exist)
    blacklist nouveau
    options nouveau modeset=0
  4. Сгенерируйте новую конфигурацию файла grub и перезагрузитесь, выполнив команды:

    dracut --force
    reboot
  5. После перезагрузки, проверьте, что драйвер nouveau не используется. Для этого выполните команду:

    lsmod | grep nouveau
  6. Узнайте полный путь до ядра системы. Для этого выполните команду:

    ll /usr/src/kernels/
    total 4
    drwxr-xr-x. 23 root root 4096 Apr 18 04:14 4.18.0-485.el8.x86_64

    В текущем примере полный путь до ядра системы будет /usr/src/kernels/4.18.0-485.el8.x86_64

  7. Добавите бит x для установки драйвера. Для этого выполните команду chmod +x имя_драйвера. Например:

    chmod +x NVIDIA-Linux-x86_64-450.236.01-grid.run
  8. Установите драйвер NVIDIA, указав полный путь к ядру. Например:

    ./NVIDIA-Linux-x86_64-450.236.01-grid.run --kernel-source-path /usr/src/kernels/4.18.0-485.el8.x86_64
    
    Verifying archive integrity... OK
    Uncompressing NVIDIA Accelerated Graphics Driver for Linux-x86_64 450.236.01..............
  9. На вопрос о необходимости запуска утилиты nvidia-xconfig ответьте утвердительно.

    vgpu linux x
  10. Перезагрузите ВМ. В графическом режиме проверьте отображение карты. Для проверки (в графическом режиме) выполните команду в терминале:

    nvidia-settings&
    vgpu linux into1
    vgpu linux into2
  11. Для проверки в режиме командной строки выполните nvidia-smi. Пример результата выполнения:

    vgpu linux into3

Теперь GPU назначен виртуальной машине.

7. Проверка подключенных устройств к хосту

Для проверки количество подключенных vGPU к хосту выполните команду mdevctl list. В текущем примере подключено 2 устройства, всего же в режиме nvidia-157 может быть до 4-х vGPU.

mdevctl list

23528e9a-3fbb-44e5-a885-efae7899e06f 0000:d8:00.0 nvidia-157 auto (defined)
41c64afd-74c4-47cd-b5cb-7f90f826004e 0000:d8:00.0 nvidia-157 manual

Так же отслежитвать работу vGPU можно с помощью утилиты nvidia-smi

nvidia-smi

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.236.03   Driver Version: 450.236.03   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  Tesla P4            On   | 00000000:D8:00.0 Off |                  Off |
| N/A   39C    P8    12W /  75W |   4029MiB /  8191MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A   2648216    C+G   vgpu                             2000MiB |
|    0   N/A  N/A   2673268    C+G   vgpu                             2000MiB |
+-----------------------------------------------------------------------------+

8. Лицензирование

Настройте лицензирование гостевого ПО NVIDIA vGPU для каждого vGPU и добавьте учетные данные лицензии в панели управления NVIDIA. Для дополнительной информации смотрите раздел Как осуществляется лицензирование ПО NVIDIA vGPU в документации по ПО NVIDIA Virtual GPU.

9. Удаление устройств NVIDIA vGPU

  1. Удалите драйвера. Для Windows удаление происходит через оснастку Установка и удаление программ. Для Linux запустите /usr/bin/nvidia-uninstall.

  2. Отключите устройство из менеджера управления zVirt. Для этого:

    1. Перейдите в Ресурсы  Виртуальные машины

    2. Выделите нужную ВМ и нажмите Изменить

    3. Перейдите на вкладку Доп.параметры

    4. Удалите опцию mdev_type.

    del vgpu1