Перейти к содержанию

Пример использования nVidia Grid

Список поддерживаемого оборудования в режиме vGPU

  • A100 (см. примечание)
  • M6, M10, M60
  • P4, P6, P40, P100, P100 12GB
  • T4
  • V100
  • RTX 6000, RTX 6000 passive, RTX 8000, RTX 8000 passive

Примечание об адаптере A100

Графическое ускорение на этих vGPU не поддерживается, только вычислительные задачи.

Общие примечания

Поддерживаются только 64-битные гостевые ОС. Более подробные примечания и сведения об актуальных версиях ПО содержатся по адресу https://docs.nvidia.com/grid/#hypervisor-software-versions.

Описание

Использование видеокарт NVIDIA GRID требует драйверов на Узле (Node) ECP VeiL и ВМ ECP VeiL, на которые распределены vGPU этого видеоадаптера.

Предупреждение

Не следует использовать драйверы, предлагающиеся пакетным менеджером ВМ!

Внимание!

Драйверы для хоста и ВМ должны быть согласованы по версии. Следует устанавливать драйверы из пакета, скачанного с сайта nVidia, и лучшим решением будет устанавливать драйверы для ВМ из того же пакета, из которого устанавливался драйвер для хоста.

Адрес для загрузки ПО: https://nvid.nvidia.com/dashboard/ (требуется регистрация). Выбираем драйверы для Linux KVM 8.1 (на 04.2020 года).

Архив содержит документацию, драйверы под Linux хост, Linux ВМ и Windows ВМ.

Пример названий файлов

архив ПО: NVIDIA-GRID-Linux-KVM-440.43-441.66.zip.
В нём содержится:
- драйвер для хоста: NVIDIA-Linux-x86_64-440.43-vgpu-kvm.run;
- драйвер для ВМ Windows 7, 8, Win server 2008R2, 2012R2: 441.66_grid_win7_win8_server2008R2_server2012R2_64bit_international.exe;
- драйвер для ВМ Windows 10, Win server 2016, Win server 2019: 441.66_grid_win10_server2016_server2019_64bit_international.exe;
- драйвер для Linux ВМ: NVIDIA-Linux-x86_64-440.43-grid.run.

Проверка возможности добавления в ВМ виртуальных графических адаптеров на базе nVidia Tesla

Перед проверкой необходимо иметь:

  • установленную на вычислительном узле видеокарту nVidia GRID, подключенную к сигнальным и силовым интерфейсам согласно документации на данную карту;
  • установленные на данном узле драйверы к видеокарте;
  • образ LiveCD с ОС семейства Linux для загрузки ВМ и проверки наличия vGPU среди PCI устройств ВМ. Данный образ должен позволять запуск консоли и содержать команду lspci. В частности, подходит и обладает сравнительно малым размером образ сборки Clonezilla (https://clonezilla.org/downloads/download.php?branch=stable). Этот или любой подходящий образ следует скопировать в пул данных вычислительного узла с видеокартой Nvidia.

Необходимо убедиться, что драйверы для видеокарты установлены и корректно опознают видеокарту. Для этого в CLI узла необходимо ввести команду nvidia status. Должна быть выведена таблица с параметрами имеющихся на узле адаптеров Nvidia.

  • В случае, если выводится сообщение об ошибке '''Unable to find nvidia-smi utility. Is NVIDIA driver installed?''', необходимо произвести установку драйверов видеокарты согласно Nvidia Grid How-to. При этом файл пакета драйвера не обязательно брать с сайта NVIDIA, возможно использовать файл https://veil-update.mashtab.org/files/nvidia_drivers/NVIDIA-Linux-x86_64-440.43-vgpu-kvm.run
  • Если выводится иное сообщение об ошибке, следует проверить правильность подключения к шине PCI-E и интерфейсов питания, настроек BIOS согласно Nvidia Grid How-to и исправность видеокарты.

Для проверки следует создать ВМ, подключить к ней устройство vGPU, загрузить ВМ и проконтролировать наличие устройства vGPU среди PCI устройств ВМ:

  • переходим в пункт меню Virtual machines, нажимаем кнопку Create;
  • выбираем вручную узел, на котором установлена видеокарта nVidia GRID;
  • размер ОЗУ указываем примерно 1000 Мбайт для избежания проблем при запуске LiveCD;
  • тип ОС выбираем Linux;
  • подтип ОС выбираем согласно нашему LiveCD или Other Linux (32/64 бит согласно разрядности ОС LiveCD);
  • имя ВМ произвольно, прочие параметры оставляем по умолчанию;
  • создание виртуального диска пропускаем;
  • к виртуальному CD-ROM подключаем образ нашего LiveCD;
  • виртуальные интерфейсы пропускаем;
  • завершаем мастер создания ВМ, питание ВМ не включаем.

Переходим в свойства нашей созданной ВМ:

  • переходим в пункт меню Mediated devices;
  • нажимаем кнопку Attach;
  • выбираем тип Mediated Device так, чтобы во второй строке формы был хотя бы один PCI контроллер с ненулевым количеством Mediated Devices такого типа;
  • выбираем любой из доступных PCI контроллеров;
  • устанавливаем параметры: Display = 'on', Ramfb = 'off'; сохраняем изменения кнопкой OK.
  • в пункте меню ВМ Information выбираем тип видеоадаптера VGA;
  • включаем питание ВМ.

После включения ВМ выполняем команду nvidia status на узле и убеждаемся, что её вывод теперь содержит строку в разделе таблицы Processes: с именем процесса, равным vgpu. Далее:

  • подключаемся к экрану нашей ВМ через SPICE HTML5 клиент VeiL, ожидаем загрузки LiveCD;
  • запускаем терминал в ВМ, выполняем команду lspci и убеждаемся, что вывод команды содержит строку с VGA адаптером NVIDIA.

Установка драйвера NVIDIA GRID на хост

  • копируем файл драйвера на хост через ssh;
  • заходим в shell;
  • выполняем следующие команды:

        apt install build-essential linux-headers-amd64
        modprobe -r nouveau
        sh ./NVIDIA-Linux-x86_64-440.43-vgpu-kvm.run --disable-nouveau
        mkdir /usr/lib64
        ln -s /usr/lib/x86_64-linux-gnu/libnvidia-vgpu.so /usr/lib64
        ln -s /usr/lib/x86_64-linux-gnu/libnvidia-vgxcfg.so /usr/lib64
        ln -s /usr/lib/x86_64-linux-gnu/libnvidia-ml.so /usr/lib64
        ln -s /usr/lib/x86_64-linux-gnu/libnvidia-cfg.so /usr/lib64
    

    Примечание

    В процессе установки инсталлятор предложит установить драйверы через DKMS, следует отказаться.

  • перезагружаем узел.

Внимание!

Если установка драйвера завершится с ошибкой про невозможность установить nvidia.ko, а в логе установщика будет предупреждение на 64-bit BAR или нулевой размер BAR, то нужно в setup включить поддержку (это звучит как Above 4G Decoding=Enabled, на T-platform ещё и PCI 64-Bit Resource Allocation=Enabled).

Установка nVidia GRID на ВМ

Общие необходимые условия:

  • Модель vCPU. Нужно установить host-model или, если необходимо, host-passthrough, с процессором по умолчанию видеодрайвер не запустится.
  • Совместимость версии драйверов на ВМ и на хосте. Иначе видеодрайвер не запустится.
  • Заголовки ядра (на Debian-based системах ставятся при помощи apt install linux-headers-$(uname -r)).

Linux

Установка:

На данный момент пока нет устоявшегося решения со spice-streaming-agent, изображение с ВМ отдаётся через обычный Spice протокол.

Полезно иметь запущенный сервис ssh на ВМ на этапе настройки.

По умолчанию ECP VeiL при подключении mediated device видеоадаптера делает его единственным, после установки драйверов это должно быть достаточно для работы аппаратно ускоренной графики в ВМ.

Устанавливаем драйвер видеоадаптера (sudo sh /path/NVIDIA-Linux-x86_64-xxx.xx-grid.run). Это должен быть .run файл из того же пакета, что и драйвер для хоста. При установке можно указать ключ --no-x-check, в этом случае установщик не станет ругаться на запущенную сессию X, если запуск из-под неё. Вопросы в процессе установки:

  • Install NVIDIA's 32-bit compatibility libraries? - NO
  • An incomplete installation of libglvnd was found.... Don't install
  • Unable to determine the path to install the libglvnd EGL vendor library config files. - OK
  • Would you like to run the nvidia-xconfig utility ... - Yes

После установки перезагружаем ВМ.

Если установлено более одного видеоадаптера (например, qxl + nvidia) или, если проблемы с получением изображения после перезагрузки, то через SSH указываем драйверу PCI адрес видеоадаптера Nvidia: ищем наш видеоадаптер в выводе команды lspci и идём править /etc/X11/xorg.conf. Там в секции Device прописываем строку, например, если PCI адрес MDEV равен 00:000a:00.0,

 # не забываем перевести hex в dec!
 BusID          "PCI:0:10:0"

Перезагружаем машину, изображение должно быть.

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

Настройки лицензирования находятся в файле /etc/nvidia/gridd.conf, при установке он отсутствует, но имеется gridd.conf.template в том же каталоге. Этот файл gridd.conf.template следует скопировать в файл gridd.conf, после чего ввести в строках ServerAddress= и ServerPort= адрес и порт сервера лицензий.

Далее следует перезапустить службу клиента лицензий на ВМ:

sudo systemctl restart nvidia-gridd.service
После этого, если сервер доступен и имеет доступные лицензии, лицензионные ограничения снимаются сразу.

При желании можно управлять лицензиями через графическое приложение nVidia, для этого следует сделать все манипуляции с файлами конфигурации, но в файле gridd.conf раскомментировать строку EnableUI=True, после чего перезапустить службу nvidia-gridd.service.

Общие замечания о лицензировании

Тип лицензии получаемой ВМ, зависит от выделенной ей конфигурации vGPU. Например, если сервер лицензий в состоянии отдать лицензию Quadro vDWS, а vGPU выделена лишь в конфигурации -xB, то лицензия будет получена на virtual PC. Если на такой лицензии сервера конфигурацию VGPU клиента сделать -xQ, то тогда и лицензия будет выдана на Quadro vDWS. При этом в обоих случаях сервер будет рапортовать о выданных лицензиях Quadro vDWS.