3D ускорение VDI на практике.
Часть 1 — vSGA и vDGA
Отсутствие аппаратного ускорения графики является существенным препятствием при внедрении технологий виртуализации в компаниях, работающих в сфере дизайна, проектирования, конструкторских разработок и пр. Рассмотрим, какие новые возможности появились с выходом NVIDIA GRID.
Виртуализация рабочих мест (VDI) уже прочно вошла в нашу жизнь, в первую очередь в корпоративном сегменте рынка, и уверенно пробивает путь в остальные сегменты, в том числе и в виде публичных облачных сервисов (Desktop as a Service). Отсутствие же аппаратного ускорения графики сдерживает использование данной технологии в тех отраслях, которые могли бы оценить такие преимущества использования VDI как удаленную доступность, безопасность данных и упрощение аутсорсинга персонала.
Первые шаги к использованию 3D ускорения в VDI были сделаны достаточно давно и заключались в пробросе PCI устройств в виртуальные машины, что позволяло выдавать для VDI видеокарты, установленные в сервер или подключенные к серверу с помощью внешних PCIe корзин, например, таких как Dell PowerEdge C410x. Недостатки такого решения очевидны — повышенное использование электроэнергии, места в стойках и высокая стоимость.
Коротко о технологии NVIDIA GRID
С анонсом технологии NVIDIA GRID (NVIDIA VGX на момент анонса) в прошлом году интерес к использованию 3D ускоренных VDI значительно возрос. Суть технологии GRID, которая исходно предназначена именно для 3D ускорения в виртуальных средах, достаточно проста и включает в себя следующие принципы:
- Агрегация на базе одной PCIe карты нескольких графических ускорителей;
- Возможность виртуализации графических ускорителей на уровне гипервизора;
- Возможность виртуализации графических ускорителей средствами технологии GRID Virtual GPU.
На данный момент компанией NVIDIA выпущено две видеокарты построенных на базе архитектуры NVIDIA Keppler — NVIDIA GRID K1 и K2. Характеристики данных карт следующие:
GRID K1 | GRID K2 | |
Число GPU | 4 Kepler GPU начального уровня | 2 Kepler GPU высокого класса |
Ядра CUDA | 768 | 3072 |
Общий размер памяти | 16 ГБ DDR3 | 8 ГБ GDDR5 |
Максимальная мощность | 130 Вт | 225 Вт |
Длина Карты | 26,7 см | 26,7 см |
Высота Карты | 11,2 см | 11,2 см |
Ширина Карты | Dual Slot | Dual Slot |
Отображение ввода/вывода данных |
Нет | Нет |
Дополнительное питание | Разъем 6-pin | Разъем 8-pin |
PCIe | x16 | x16 |
Поколение PCIe | Gen3 (совместим с Gen2) | Gen3 (совместим с Gen2) |
Охлаждение | Пассивное | Пассивное |
Технические спецификации | Спецификации платы GRID K1 | Спецификации платы GRID K2 |
Фактически, GRID K1 представляет собой интегрированные на одной PCIe карте четыре карты уровня QUADRO K600, карты GRID K2 — две карты уровня QUADRO K5000. Это позволяет даже без использования виртуализации существенно увеличить плотность графических адаптеров в серверах.
Включение в платформу GRID серверов различных вендоров, обеспечивающих установку до 4 карт GRID в один сервер избавляет от необходимости применять внешние PCIe корзины.
ПО, поддерживающее технологию GRID — это гипервизоры VMware, Citrix и Microsoft, а также системы виртуализации рабочих станций VMware и Citrix (и Microsoft, если рассматривать варианты общего доступа к серверу).
Описание нашего тестового стенда
Для нашего тестового стенда мы решили использовать 1U сервер SuperMicro 1027GR-TRFT.
Его основные особенности:
- Dual socket R (LGA 2011) supports Intel® Xeon® processor E5-2600 and E5-2600 v2 family
- Up to 512GB ECC DDR3, up to 1866MHz; 8x DIMM sockets
- 3x PCI-E 3.0 x16 slots (support GPU/Xeon Phi cards), 1x PCI-E 3.0 x8 (in x16) low-profile slot
- Intel® X540 10GBase-T Controller
- 4x Hot-swap 2.5" SATA3 Drive Bays
- 1800W Redundant Power Supplies Platinum Level (94%+)
Такой выбор был обусловлен высокой плотностью (до 3 видеокарт GRID в 1U) и наличию встроенных 10GBase-T сетевых интерфейсов.
SATA корзина позволяет использовать недорогие SSD диски для Host Based кэширования доступа к данных, столь полезного при VDI нагрузках, с характерными пиками дисковой активности в начале и окончании рабочего дня.
При современных же ценах на модули памяти восьми DIMM-слотов оказывается вполне достаточно в ситуации, когда плотность VM на сервер ограничивается CPU и GPU ресурсами.
В данный сервер мы установили карту NVIDIA GRID K1. Приводим фото сервера с готовой к установке видеокартой:
В качестве платформы виртуализации была выбрана привычная нам VMware vSphere. Забегая вперед, отмечу, что во второй части данной статьи нам придется использовать Citrix XenServer, поскольку на данный момент только он и только в статусе Tech Preview поддерживает технологию GRID Virtual GPU.
Гипервизор ESXi определяет видеокарту как 4 устройства NVIDIAGRID K1, подключённые через PCI/PCI bridge, что делает ускорители доступными для раздельного использования как passthrough устройства, подключаемые к ВМ, или как основу для виртуализации на уровне гипервизора.
В гипервизор инсталлируется драйвер от NVIDIA:
~ # esxcli software vib list | grep NVIDIA
NVIDIA-VMware_ESXi_5.1_Host_Driver 304.76-1OEM.510.0.0.802205 NVIDIA VMwareAccepted 2013-03-26
Все устройства, которые не переведены в режим passthrough, при загрузке инициализируются и используются драйвером от NVIDIA:
2013-10-28T06:12:42.521Z cpu7:9838)Loading module nvidia ...
2013-10-28T06:12:42.535Z cpu7:9838)Elf: 1852: module nvidia has license NVIDIA
2013-10-28T06:12:42.692Z cpu7:9838)module heap: Initial heap size: 8388608, max heap size: 68476928
2013-10-28T06:12:42.692Z cpu7:9838)vmklnx_module_mempool_init: Mempool max 68476928 being used for module: 77
2013-10-28T06:12:42.693Z cpu7:9838)vmk_MemPoolCreate passed for 2048 pages
2013-10-28T06:12:42.693Z cpu7:9838)module heap: using memType 2
2013-10-28T06:12:42.693Z cpu7:9838)module heap vmklnx_nvidia: creation succeeded. id = 0x410037000000
2013-10-28T06:12:42.943Z cpu7:9838)PCI: driver nvidia is looking for devices
2013-10-28T06:12:42.943Z cpu7:9838)PCI: driver nvidia claimed device 0000:86:00.0
2013-10-28T06:12:42.943Z cpu7:9838)PCI: driver nvidia claimed device 0000:87:00.0
2013-10-28T06:12:42.943Z cpu7:9838)PCI: driver nvidia claimed 2 devices
NVRM: loading NVIDIA UNIX x86_64 Kernel Module 304.76 Sun Jan 13 20:13:01 PST 2013
2013-10-28T06:12:42.944Z cpu7:9838)Mod: 4485: Initialization of nvidia succeeded with module ID 77.
2013-10-28T06:12:42.944Z cpu7:9838)nvidia loaded successfully.
После загрузки гипервизора
В качестве платформы для создания инфраструктуры VDI используется продукт Citrix XenDesktop 7, который в настоящий момент используется и в нашей production инфраструктуре, предоставляющей сервисы VDI для наших заказчиков. На тестовых машинах используется технология HXD 3D Pro, осуществляющая эффективную упаковку и проброс на клиента отрендеренного GPU изображения. Тестовый виртуальный сервер имеет следующую конфигурацию: 4vCPU 2GHz, 8GB RAM, 60GB HDD.
Тестирование vSGA
vSGA — это технология VMware, обеспечивающая виртуализацию ресурсов GPU, установленных в сервера под управлением гипервизора VMware ESXi, и последующее использование данных GPU для обеспечения 3D ускорения для виртуальных видеокарты, выданных для виртуального сервера.
Технология обладает множеством ограничений по производительности и функционалу виртуальных видеокарт, однако позволяет максимизировать плотность виртуальных машин на один GPU.
Фактически, нам удалось запустить машины с близким к двухкратному превышением количества виртуальной видеопамяти в сравнении с количеством физической видеопамяти на используемых GPU.
Функциональность виртуальной видеокарты следующая:
- поддерживаемые API: DirectX 9, OpenGL 2.1
- максимальный объем видеопамяти: 512MB
- производительность графического ядра: динамическая, не управляется.
В случае использование VMware View такую конфигурацию виртуальных машин можно осуществить непосредственно из интерфейса управления View, в нашем же случае для активации аппаратного ускорения для виртуальной видеокарты необходимо произвести два действия:
- включить поддержку 3D,
- установить размер видеопамяти в свойствах видеокарты в редактировании машины:
и добавить параметр mks.use3dRenderer = hardware в ее параметры:
В гостевой ОС такая виртуальная видеокарта определяется как «VMware SVGA 3D». Она отличается от обычной виртуальной видеокарты только объемом памяти и поддержкой аппаратного ускорения вышеперечисленных API.
Результаты выполнения теста FurMark на такой VDI машине однозначно говорят, что играть на ней не придется (при этом необходимо отметить, что во время тестирования физической видеокартой пользовалась одна виртуальная машина, то есть все вычислительные ресурсы видеокарты, с учетом накладных расходов виртуализации, были доступны тесту):
С точки зрения AutoCad 2014 возможности видеокарты выглядят следующим образом:
Enhanced 3D Performance: Available and on
Smooth display: Available and off
Gooch shader: Available and using hardware
Per-pixel lighting: Available and on
Full-shadow display: Available and on
Texture compression: Available and off
Advanced material effects: Available and on
Autodesk driver: Not Certified
Effect support:
Enhanced 3D Performance: Available
Smooth display: Available
Gooch shader: Available
Per-pixel lighting: Available
Full-shadow display: Available
Texture compression: Available
Advanced material effects: Available
Как видно, формально все параметры аппаратного ускорения поддерживаются драйвером. Предполагается, что проблемы с поддержкой мы можем увидеть только при использовании более тяжелых продуктов, использующих, например, архитектуру CUDA.
Результаты выполнения теста Cadalyst Benchmark:
Результаты не впечатляю, однако использовать данное ПО можно, а если большой производительности и работы со сложными моделями не требуется — например, в учебном классе, то высокая плотность и низкая стоимость таких машин может оказаться полезной.
Тестирование vDGA
vDGA — это название, используемое VMware для обозначения проброса физической видеокарты в виртуальную машину.
Фактически, для данной технологии NVIDIA GRID дала одно единственное преимущество — высокую плотность GPU, которая позволяет отказаться от использования внешних PCIe корзин.
Например, в используемый на тестовом стенде сервер возможно установить три видеокарты NVIDIA GRID K1, что даст нам 12 независимых ускорителей класса QUADRO K600. Это позволяет запустить на сервере 12 виртуальных серверов, что позволяет загрузить мощности сервера, а в зависимости от профиля нагрузки — и дает запас по GPU ресурсам по сравнению с CPU ресурсами.
Для проброса видеокарты в виртуальный сервер необходимо включить режим passthrough для данного PCIe устройства в конфигурации хоста и добавить PCI устройство в конфигурацию виртуальной машины:
Также, требуется установить полное резервирование памяти для данной виртуальной машины
и провести настройку pci hole. На этот счет существуют различные мнения, мы выбрали значения от 1200 до 2200:
В гостевой ОС в таком случае видеокарта видится полноценным устройство от NVIDIA и требует установки драйверов для семейства видеокарт GRID.
Результаты FurMark близки к результатам, полученным в тесте vSGA, что говорит об относительной эффективности уровня виртуализации для этого теста:
При использовании AutoCad 2014 картина следующая:
Current Effect Status:
Enhanced 3D Performance: Available and on Smooth display: Available and off
Gooch shader: Available and using hardware
Per-pixel lighting: Available and on
Full-shadow display: Available and on
Texture compression: Available and off
Advanced material effects: Available and on
Autodesk driver: Not Certified
Effect support:
Enhanced 3D Performance: Available
Smooth display: Available
Gooch shader: Available
Per-pixel lighting: Available
Full-shadow display: Available
Texture compression: Available
Advanced material effects: Available
Все возможности также ожидаемо поддерживаются, однако карточка не является сертифицированной. Из серии GRID для AutoCad сертифицирована только K2.
Результаты выполнения бенчмарка Cadalyst 2012:
Как мы видим, проброшенная видеокарта показывает фактически результаты в 4 раза большие, чем виртуализированная. В данном случае, использовать для работы проектировщика такую машину уже возможно.
Если же производительности карты K1 не достаточно, можно установить K2 и получить top range видеокарту внутри виртуального сервера.
Во второй части статьи
Мы подробно расскажем о возможности виртуализации GPU посредством технологий NVIDIA, которые обещают нам поддержку всех доступных физической карте API и производительность, достаточную для уверенной работы с CAD, покажем тестовый стенд, замеры производительности таких видеокарт и подведем итоги. Продолжение следует.