The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

NVIDIA опубликовала код с реализацией vGPU на базе драйвера Nouveau

25.09.2024 19:25

Компания NVIDIA опубликовала набор патчей для ядра Linux с реализацией технологии vGPU, позволяющей использовать виртуальные GPU NVIDIA в системах виртуализации. Работа vGPU организуется аппаратно через разделение ресурсов физического GPU NVIDIA и привязки каждому vGPU своей виртуальной функции PCI Express (VF, Virtual Function), что позволяет создавать на базе гостевых систем мощные виртуальные рабочие станции, способные выполнять ресурсоёмкие вычислительные и графические операции. Драйвер может использоваться с видеокартами NVIDIA на базе микроархитектуры Ada Lovelace. Число создаваемых vGPU зависит от модели видеокарты.

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

Реализация включает в себя базовый драйвер nvkm (core driver), построенный на базе открытого драйвера Nouveau, и менеджер vGPU - vgpu_mgr, реализованный в форме модуля VFIO (Virtual Function I/O). Менеджер vGPU выполняет такие функции, как создание/удаление vGPU, выбор типа vGPU, предоставление API для управления из пространства пользователя. Менеджер vGPU взаимодействует с базовым драйвером GPU, который непосредственно обращается к оборудованию, выполняет загрузку прошивки GSP, вызывает связанные с vGPU функции прошивки, управляет совместными ресурсами, резервирует память в GPU, занимается обработкой исключений, определяет конфигурацию оборудования и выполняет обработку системных событий, таких как переход в спящий режим.



                            +--------------------+ +--------------------+ +--------------------+ 
                            | Linux VM           | | Windows VM         | | Guest VM           | 
                            | +----------------+ | | +----------------+ | | +----------------+ | 
                            | |Applications... | | | |Applications... | | | |Applications... | | 
                            | +----------------+ | | +----------------+ | | +----------------+ | ... 
                            | +----------------+ | | +----------------+ | | +----------------+ | 
                            | |  Guest Driver  | | | |  Guest Driver  | | | |  Guest Driver  | | 
                            | +----------------+ | | +----------------+ | | +----------------+ | 
                            +---------^----------+ +----------^---------+ +----------^---------+ 
                                      |                       |                      |           
                           +--------------------------------------------------------------------+
                           |+--------------------+ +--------------------+ +--------------------+|
                           ||       QEMU         | |       QEMU         | |       QEMU         ||
                           ||                    | |                    | |                    ||
                           |+--------------------+ +--------------------+ +--------------------+|
                           +--------------------------------------------------------------------+
                                      |                       |                      |
+-----------------------------------------------------------------------------------------------+
|                           +----------------------------------------------------------------+  |
|                           |                                VFIO                            |  |
|                           |                                                                |  |
| +-----------------------+ | +------------------------+  +---------------------------------+|  |
| |  Core Driver vGPU     | | |                        |  |                                 ||  |
| |       Support        <--->|                       <---->                                ||  |
| +-----------------------+ | | NVIDIA vGPU Manager    |  | NVIDIA vGPU VFIO Variant Driver ||  |
| |    NVIDIA GPU Core    | | |                        |  |                                 ||  |
| |        Driver         | | +------------------------+  +---------------------------------+|  |
| +--------^--------------+ +----------------------------------------------------------------+  |
|          |                          |                       |                      |          |
+-----------------------------------------------------------------------------------------------+
           |                          |                       |                      |           
+----------|--------------------------|-----------------------|----------------------|----------+
|          v               +----------v---------+ +-----------v--------+ +-----------v--------+ |
|  NVIDIA                  |       PCI VF       | |       PCI VF       | |       PCI VF       | |
|  Physical GPU            |                    | |                    | |                    | |
|                          |   (Virtual GPU)    | |   (Virtual GPU)    | |    (Virtual GPU)   | |
|                          +--------------------+ +--------------------+ +--------------------+ |
+-----------------------------------------------------------------------------------------------+


Дополнительно можно отметить принятие в состав Mesa Vulkan-драйвера gfxstream (Graphics Streaming Kit), который может применяться для организации доступа к API Vulkan из гостевых систем на базе Linux, Android и Fuchsia. Основой драйвера выступает одноимённый генератор кода (Graphics Streaming Kit), применяемый для перенаправления обращений к графическим API при виртуализации API Vulkan. Драйвер разработан компанией Google и используется в эмуляторе платформы Android, виртуальном Android-устройстве Cuttlefish, сервисе Google Play Games и операционной системе Fuchsia. Поддержка gfxstream уже включена в состав QEMU и crosvm. Поддерживается совместное использование с виртуальными устройствами virtio-gpu и goldish.

  1. Главная ссылка к новости (https://www.phoronix.com/news/...)
  2. OpenNews: Компания Intel представила KVMGT, механизм виртуализации GPU для KVM
  3. OpenNews: NVK и Zink существенно улучшили ситуацию с открытыми драйверами для GPU NVIDIA
  4. OpenNews: Red Hat представил Nova, драйвер для GPU NVIDIA, написанный на языке Rust
  5. OpenNews: Venus - виртуальный GPU для QEMU и KVM, реализованный на базе API Vulkan
  6. OpenNews: NVIDIA подытожила планы по переводу Linux-драйверов на открытые модули ядра по умолчанию
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/61921-vgpu
Ключевые слова: vgpu, nvidia, gfxstream
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (40) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, бух. (?), 19:44, 25/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –16 +/
    Погуглите за меня - что могут предложить амд и интел в ответ на этот выпад нвидии?
     
     
  • 2.3, Афроним (?), 19:46, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +20 +/
    Открытые драйвера,не знали что ли?
     
     
  • 3.8, Аноним (8), 20:00, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • –11 +/
    Так они уже предложили. Больше им предложить нечего? Кто последний предложит, тот и победит.
     
     
  • 4.19, Аноним (19), 21:36, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Они отрыли только кусочек от дров
     
  • 2.4, Niko2040 (ok), 19:47, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Intel GVT-g?
     
  • 2.16, пианино (?), 21:16, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    У обоих есть аналогичная технология в открытых драйверах
     
     
  • 3.17, Аноним (17), 21:22, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    У AMD такая технология есть только номинально. Для работы нужна поддержка со стороны блобов firmware, но нужные прошивки есть для ограниченного круга моделей ускорителей для дата-центров. Статус поддержки в юзерспейсе не понятен.
     
     
  • 4.18, Аноним (-), 21:32, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • –12 +/
    > У AMD такая технология есть только номинально. Для работы нужна
    > поддержка со стороны блобов firmware, но нужные прошивки есть для
    > ограниченного круга моделей ускорителей для дата-центров. Статус поддержки
    > в юзерспейсе не понятен.

    Что за булшит? У амд проброс в виртуалку есть сто лет к ряду.

     
     
  • 5.25, Минона (ok), 22:18, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +10 +/
    Так в сабже речь о vgpu, а не о пробросе всей видяхи.
     
  • 4.30, ананим.orig (?), 04:57, 26/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Драйвер может использоваться с видеокартами NVIDIA на базе микроархитектуры Ada Lovelace.
    > Ada Lovelace, also referred to simply as Lovelace,[1] is a graphics processing unit (GPU) microarchitecture developed by Nvidia as the successor to the Ampere architecture, officially announced on September 20, 2022.
     
  • 4.45, Аноним (45), 07:18, 28/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    У нвидии практически то же самое, в открытом драйвере поддержка в качестве хоста, все клиенты которые будут пользоваться виртуальным gpu должны поставить проприетарный драйвер.
     
  • 2.24, Аноним (24), 22:17, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    https://opennet.ru/58688-xe
     
  • 2.28, Аноним (28), 02:54, 26/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Например спецдевайсы для вычислений вместо GPU, которое вообще-то для другого совсем и имеют кучу ненужных блоков. У амд - это XDNA, у интела тоже что-то есть.
     
  • 2.32, AleksK (ok), 08:40, 26/09/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Нормальные открытые драйвера а непонятно что
     
  • 2.37, pavlinux (ok), 12:40, 26/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Интел самая первая осваивает эти фичи
     
  • 2.39, Аноним (39), 12:58, 26/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    AMD SPHINX 3 же
     
  • 2.41, anonymous (??), 18:39, 26/09/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Погуглите за меня - что могут предложить амд и интел в ответ на этот выпад нвидии?

    До недавнего времени в ноутбуках шарить видюху умел только Intel. NVIDIA и AMD программно ограничивают технологию разделения ресурсов видюхи исключительно премиум картами, раза в четыре дороже обычных пользовательскхи карт той же мощности.

    Интел шёл на встречу пользователям и предлагал технологию gvt-g, которая как раз помогала использовать видюху совместно. Но четыре года назад отказался от неё.

    По поводу новой инициативы NVIDIA в открытых драйверах - хотелось бы понять, будет ли она точно также заблокирована для ноутбучных видюх как в закрытых, или всё же сделает технологию доступной всем.

     
  • 2.46, Аноним (46), 14:37, 29/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    virgl test server, у интела vgpu уже давно.
     

  • 1.2, Афроним (?), 19:45, 25/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Презренные войтишники теперь будут играть всем коллективом на одной 4090, вместо того чтобы делать вид что работают. Бгг.
     
     
  • 2.6, Аноним (6), 19:51, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Будут дружно майнить на видюхе начальника.
     
  • 2.13, penetrator (?), 20:53, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +7 +/
    это предложение невидии для гиперскейлеров, чтобы дальше доить хомячков

    теперь по vGPU в каждом облачном инстансе, у вас будет виртуальная 4090 за дорого, как настоящая (но это не точно)

     
  • 2.33, AleksK (ok), 08:41, 26/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Играть на nouveau? Если только в косынку.
     
     
  • 3.44, Афроним (?), 09:32, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ньювоу это типа враппер, а на самой виртуалке проприетарный драйвер. В статье же написано об этом.
     

  • 1.5, Аноним (5), 19:50, 25/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    По видео не похоже, что в виртуалке 60 FPS. Так, 15 где-то, и VSync нету.
     
     
  • 2.9, GhostX (?), 20:28, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Nouveau же.
     

  • 1.7, Аноним (7), 19:58, 25/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Timeo Danaos et dona ferentes - зачем отдельный PCI для гостевых GPU, если есть VirGL (pun intended)?
     
     
  • 2.10, anonymouse (?), 20:32, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Затем, что при этом каждая виртуалка получает со своей точки зрения полноценную видюху согласно выделенного профиля vgpu, включающую в себя NVENC блок. Это позволяет без лишних передач несжатого потока по pci и затрат проца выводить из вм аппаратно сжатое h264/h265/vp8/vp9 изображение (в зависимости от модели карты). А virgl, хм, тут отдыхает
     
  • 2.42, anonymous (??), 18:41, 26/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > если есть VirGL

    VirGL - это исключительно OpenGL. А если тебе нужна CUDA или ускоренный декодинг видео?

     

  • 1.12, Самый Лучший Гусь (?), 20:47, 25/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Лучше бы это сделало AMD. Было бы больше пользы и радости. А так... нвидия
     
     
  • 2.15, Аноним (15), 21:08, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    AMD вообще хоть что-то сделала? Ну ладно, можно согласиться, обкатала Mantle, но исключительно для себя и не для индустрии. Почему лучше?
     
  • 2.26, Аноним (24), 22:21, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    https://opennet.ru/61667-zluda
     
     
  • 3.27, nona (?), 00:38, 26/09/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Злуда В С Ё
     

  • 1.14, НяшМяш (ok), 21:06, 25/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    > bool nvkm_vgpu_mgr_is_supported(.....
    >     .....
    >    return device->card_type == AD100.....

    Расходимся, поддерживается только А100 за 8к денег, то есть только большой энтерпрайз. Подозреваю, эта функциональность лежит в GSP. Владельцы 4090 могут и дальше продолжать курить бамбук.

     
     
  • 2.21, anonymous (??), 21:48, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Есть чудесный vgpu-unlock-rs
     
  • 2.22, Gentoofan (?), 21:51, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    AD100 не равно A100, разве нет? 4090 это AD102 https://www.techpowerup.com/gpu-specs/nvidia-ad102.g1005
     
     
  • 3.23, Gentoofan (?), 21:56, 25/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да, похоже что AD100 - это внутренний тип Нуво, а-ля NV170, NV190 из https://nouveau.freedesktop.org/FeatureMatrix.html - см https://github.com/torvalds/linux/blob/master/drivers/gpu/drm/nouveau/nvkm/eng
     

  • 1.34, Аноним (-), 08:55, 26/09/2024 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     
  • 1.38, pavlinux (ok), 12:44, 26/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А чо в новости не написали, что для использования VFIO  нужны блобские драйвера?

    - Host kernel: https://github.com/zhiwang-nvidia/linux/tree/zhi/vgpu-mgr-rfc
    - Guest driver package: NVIDIA-Linux-x86_64-535.154.05.run

      Install guest driver:
      # export GRID_BUILD=1
      # ./NVIDIA-Linux-x86_64-535.154.05.run

     
     
  • 2.40, Аноним (40), 17:11, 26/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Как не написали, во втором абзаце: "на стороне гостевых систем используются штатные проприетарные драйверы NVIDIA".
     

  • 1.47, Аноним (47), 08:33, 03/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Не уверен, что все комментаторы прошли по ссылкам и поняли, что речь идёт о SR-IOV.

    А значит нужна поддержка:
    1. SR-IOV на материнской плате, а она не всегда есть
    2. Поддержка ASPM на материнской плате, которая тоже не всегда есть
    3. Поддержка IOMMU (AMD-Vi и Intel VT-d), которая вроде бы везде есть сейчас, но я могу ошибаться. Это не поддержка виртуализации, а именно IOMMU.
    4. "Above 4G Decoding" или аналогичная опция должна быть включена.
    5. И потом радостно сидеть и подбирать настройки адресации MMIO и пределов битности отображения MMIO. Подбор этих параметров зависит от сочетания производителя матпалаты, модели матплаты и марки и модели видеокарты.

    Если не имели дело с SR-IOV, для простоты рекомендую взять Windows Server с Hyper-V и проверить, что вы корректно заставили работать ваше железо, что у вас создаются VF и SR-IOV поддерживается для GPU. Там есть пара скриптиков на PowerShell, которые выдают диагностику.

    Тестировать на ESXi не рекомендую, у него есть много специфики (старое ядро, нет возможности мапить более 44 бит на MMIO в ядре, проблемы с поддержкой некоторых матерей). И на всякий случай для чистоты эксперимента выньте сетевку, если оно у вас тоже с поддержкой SR-IOV и тоже поддерживает нарезку VF.

    Ну и вот после этого играйтесь с Nouveau.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру