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

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

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

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

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

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

Примечание 2 об адаптерах с архитектурой Ampere

Данные адаптеры обладают поддержкой SR-IOV. Для возможности распределения vGPU на них может понадобиться включить поддержку данной технологии для всех требуемых видеоадаптеров на хосте при помощи команды CLI nvidia sriov enable pciaddr1 pciaddr2 ....

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

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

Описание

Использование видеокарт nVidia GRID требует драйверов на узле и ВМ, на которые распределены vGPU этого видеоадаптера.

Linux драйвера

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

Версионность драйверов

Драйверы для хоста и ВМ должны соответствовать по версии. Следует устанавливать драйверы из пакета, скачанного с сайта 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 GRID на узел

  • копируем файл драйвера на узел в пул данных через Web-интерфейс (загрузка файлов), ssh, ftp;
  • устанавливаем драйвера (с версии 4.7.1 есть команда в CLI) install-run --nv /storages/local/default/_LIBRARY/NVIDIA-Linux-x86_64-470.63.01-vgpu-kvm.run
  • до версии 4.7.1 заходим в shell;
  • выполняем следующие команды:
   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

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

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

Ошибка установки драйвера

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

Установка драйвера nVidia GRID на ВМ

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

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

Следует учитывать, что ВМ с Mediated-устройствами не могут мигрировать между узлами.

Рекомендации: следует включить опцию для ВМ с ОС Windows Оптимизацию vgpu во вкладке Информация (с версии 4.6.5).

Для модели процессора будут задействованы опции:

<feature policy="require" name="invtsc"/>
<feature policy="disable" name="hypervisor"/>

Для всех vCPU будут задействованы опции:

{% for vcpu in cpu_count_range %}
    <vcpusched vcpus="{{ vcpu }}" scheduler="fifo" priority="1"/>
{% endfor %}

Настройки времени будут дополнены следующими опциями:

<timer name="rtc" tickpolicy="catchup"/>
<timer name="pit" tickpolicy="delay"/>
<timer name="hpet" present="no"/>
<timer name="kvmclock" present="no"/>
<timer name="hypervclock" present="no"/>
<timer name="tsc" present="yes" mode="native"/>

Linux

Установка

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

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

По умолчанию 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.

Установка и настройка сервера лицензий

Документация находится на сайте Nvidia по ссылке.

Получение бесплатной 90-дневной оценочной лицензии

Для оценки и тестирования технологии vGPU Nvidia предлагает воспользоваться временной лицензией, которая действительна 90 дней с момента первого запуска. Для получения лицензии необходима регистрация на сайте Nvidia по

ссылке.

Программное обеспечение

Рекомендуется использовать следующее программное обеспечение для разработки с поддержкой GPU:

  • CUDA Toolkit - документация доступна на официальном ресурсе по ссылке.
  • Deepo - документация и дистрибутив доступны на официальном ресурсе по ссылке.
  • NVIDIA GRID - техническое описание доступно на официальном ресурсе по ссылке.

Проверка возможности добавления в ВМ виртуальных графических адаптеров на базе 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, возможно использовать драйвер.
  • Если выводится иное сообщение об ошибке, следует проверить правильность подключения к шине PCI-E и интерфейсов питания, настроек BIOS и исправность видеокарты.

Для проверки следует создать ВМ, подключить к ней устройство 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.

Back to top