суббота, 31 августа 2013 г.

"Вольтмод" для VMware View

Не так давно, начав более плотно изучать тему удаленной работы VDI со всевозможными CAD программами, мне захотелось собрать свой домашний стенд для проверки работы технологий ускорения графики - VMware vDGA/vSGA, Microsoft RemoteFX и Citrix HDX 3DPro.

Модернизация видеокарты

Покупать для этого "полноценную" видеокарту за несколько тысяч $ было непозволительной роскошью, и даже б.у. видеокарты на eBay больно били по бюджету. Поэтому было решено попробовать "прошить" какую-нибудь настольную видеокарту, Just for Fun. Беглый поиск быстро привел меня к нужной теме на форуме EEVblog.

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

Для экспериментов была выбрана видеокарта Asus GT640-1GD3-L.
Во-первых, GT 640 и GRID K1 основаны на одном и том же ядре - Kepler GK107 (в K1 используется 4-е таких ядра), во-вторых, для превращения в GRID K1 достаточно перепаять несколько резисторов, в-третьих, GT 640 - самый бюджетный из вариантов, и, в случае неудачи, эту видеокарту будет не так жалко, как какой-нибудь GTX 680.

Для определения PCI Device ID устройства используются следующие резисторы (показаны на рисунке под номерами 1, 2, 3, 4).

Для того, чтобы сменить ID нужно перепаять резисторы в соответствии с таблицей.

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

После модификация я получил свой GRID K1 (с одним ядром и гагабайтом памяти).

В VMware View можно использовать на выбор один из двух режимов ускорения графики - vSGA или vDGA. Прочитать про их отличия можно в этой статье или в документе Virtual Machine Graphics Acceleration Deployment Guide.

vDGA

Для начала я решил попробовать пробросить видеокарту целиком внутрь ВМ (vDGA). Данный режим, хоть и не поддерживает GRID K1 на текущий момент, но должен работать с любыми видеокартами, даже с AMD Radeon.

Для работы vDGA требуется, чтобы процессор и материнская плата сервера поддерживали режим виртуализации периферийных устройств (Intel VT-d).

Кроме того, для ВМ, к которой подключается видеокарта, требуется зарезервировать всю выделенную оперативную память.

Если вы используете ESXi 5.5 U2 или более ранние версии, и для ВМ выделено больше 2ГБ памяти, то в дополнительных настройках (файле .vmx) также нужно прописать параметр:
pciHole.start = 2048
Более подробная информация приведена в KB https://kb.vmware.com/kb/2142307

После проброса видеокарты, в гостевую ОС нужно установить драйвер для NVIDIA GRID K1 (доступны на сайте).

При подключении к ВМ я столкнулся с проблемой, что вместо GRID K1 используется виртуальный видеоадаптер VMware SVGA. Обойти это можно, если после подключения к ВМ, запустить диспетчер устройств (Device Manager) и отключить (Disable) адаптер VMware SVGA 3D. Подробности в этой теме.

Я записал небольшой ролик, показывающий аппаратное ускорение графики с помощью vDGA.

К сожалению, у меня нет под рукой камеры, которая может снимать с нормальным качеством и FPS, поэтому пришлось использовать запись с клиента с помощью Camtasia Studio. Заметил, что в видео наблюдается проседание FPS в роликах с 3D, в реальности все выглядит плавнее.

vSGA

Режим vSGA выглядит интереснее, потому что позволяет "расшаривать" одну видеокарту между несколькими ВМ.

Для включения режима требуется установить специальный VIB пакет с драйверами на сам гипервизор ESXi. После этого появится возможность включать аппаратное ускорении 3D графики для ВМ.

Данный режим позволяет выделить одной ВМ от 96 до 512 МБ памяти, половина из которых - это память видеоадаптера, вторая половина - оперативная память сервера. Для мониторинга работы vSGA используются две консольные утилиты nvidia-smi и gpuvm, которые позволяют отслеживать объем занятой/свободной памяти.

Управлять настройками виртуального видеоадаптера можно из веб-консоли vSphere Web Client или из консоли Horizon View Administator.

Ролик, демонстрирующий возможности vSGA.

К сожалению, vSGA поддерживает графические библиотеки не выше DirectX 9 и OpenGL 2.1, что сильно ограничивает список игр, в которые можно поиграть набор приложений, с которыми можно работать. Кроме того наблюдаются небольшие артефакты при проигрывании flash видео в полноэкранном режиме (хотя возможно это из-за того, что используется не полноценная GRID K1).

вторник, 20 августа 2013 г.

Немного о PCoIP (часть 1)

Недавно раздобыл себе для тестов PCoIP Host Card, модель EVGA HD1 на чипе TERA1. Что это за зверь, и с чем его едят?

Для тех, кто не в курсе - PCoIP Host Card - это специализированный адаптер, который устанавливается в обычный компьютер в разъем PCI-E и позволяет подключаться к нему удаленно по сети с помощью т.н. "нулевого" клиента, используя протокол PCoIP. По-сути, PCoIP Host Card - это миниатюрный компьютер, со своим процессором, памятью, сетевым интерфейсом, операционной системой (прошивкой), основной задачей которого является прием видео-изображения от стационарного компьютера, его сжатие, шифрование и передача нулевому клиенту (а также и управление виртуальной клавиатурой и мышью и проброс устройств, подключаемых к USB портам нулевого клиента).

В отличие от программной реализации PCoIP используемой, например, в VMware Horizon View, PCoIP Host Card предоставляет несколько важных преимуществ.

Во-первых, возможность подключаться к PCoIP Host Card напрямую с любого нулевого клиента с чипом Teradici. При этом нет необходимости использовать Connection Broker'ы, покупать дополнительные лицензии, оборудование и устанавливать специализированное ПО.

Во-вторых, PCoIP Host Card работает в связке с графических адаптером рабочей станции, что позволяет обеспечить полное аппаратное ускорение графики, включая полноценную аппаратную поддержку DirectX, OpenGL, комфортную работу в CAD/САПР и системах трехмерного моделирования, игру в современные 3D шутеры и т.д. (все, на что хватит мощности установленного графического адаптера). Видеовыходы графического адаптера (обычно DVI или Display Port) подключаются к PCoIP Host Card через специализированный кабель-переходник.

Карты с чипами Teradici первого поколения поддерживают до двух видеовыходов, чипы второго поколения - до четырех, что вместе с соответствующими нулевыми клиентами позволит обеспечить пользователям работу с многомониторными конфигурациями.

В-третьих, на рабочие станции с PCoIP Host Card можно устанавливать операционные системы отличные от Windows, например, Apple Mac OS X, а также использование различное оборудование, не поддерживаемое в VDI.

В-четвертых, PCoIP берет на себя всю работу по кодированию/декодированию PCoIP и разгружает центральный процессор рабочей станции. Адаптер PCoIP Host Card имеет выделенный порт RJ-45, предназначенный исключительно для передачи PCoIP трафика. Так как весь PCoIP трафик шифруется, это накладывает определенные ограничения на максимальную пропускную способность канала, а следовательно - на качество передаваемого изображения и FPS. Согласно документу Using PCoIP Host Cards with VMware View и статье KB 2009122 в конфигурации Host Card + Zero Client могут утилизировать до 220 Мбит/с пропускной способности сети для передачи данных, тогда как для виртуальных рабочих станций этот показатель достигает 7 или 20 Мбит/с.

Кажется, что 220 Мбит/с - это очень много, но это плата за (возможность поиграть в Crysis 3 в разрешении 1920x1080 с FPS около 40 кадров в секунду через коробочку не больше обычного домашнего роутера, подключенную к телевизору и гигабитному Ethernet) возможность удаленной работы через нулевой клиент с комфортным разрешением и идеальным качеством картинки, возможностью удаленного подключения веб-камер (кто пробовал подключить веб-камеру к VMware View, тот поймет), принтеров, сканеров, да и вообще большинства USB устройств.

На сегодняшний день доступны новые модели адаптеров, в которых используются чипы Teradici второго поколения TERA2xxx (поддерживающие разрешения вплоть до 2560x1600, имеющие больше памяти, лучшую производительность, поддержку USB 2.0 и позволяющих подключать до 4-х мониторов через один адаптер). Сравнение можно найти на сайте Teradici.

Кстати, даже для адаптеров первого поколения можно настроить конфигурацию с 4-я мониторами, правда немного нестандартным способом. Дело в том, что в одну рабочую станцию может быть установлено сразу два PCoIP адаптера, один из которых (Master) подключается в разъем PCI-E, а второй (Slave) просто размещается где-нибудь внутри корпуса и запитывается от стандартного 4-контактного разъема питания FDD. Используя пару нулевых клиентов, каждый с двумя мониторами, пользователь подключается к обоим Host адаптерам и получает возможность работать сразу с 4-я мониторами.

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

Подробности можно прочитать в PCoIP Multi-Monitor Deployment Guide.

Последний вопрос, который мне хотелось бы прояснить - это работа PCoIP Host Card с Connection Broker'ами, в частности, с VMware Horizon View. Данная конфигурация поддерживается и работает, но какие тут могут быть плюсы? Вдобавок к перечисленным ранее преимуществам, интеграция с VMware дает:

Возможность централизованного управления подключениями, в частности - аутентификация подключений. При подключении нулевого клиента напрямую к PCoIP Host пользователь сразу видит экран удаленного рабочего стола, может подключать USB устройства, управлять клавиатурой и мышью. Единственный вариант ограничения в данном случае - привязка нулевого клиента к PCoIP Host Card по MAC адресу. С VMware View можно указывать, каким пользователям или группам разрешено подключаться к PCoIP Host рабочим станциям. Сюда же можно отнести SSO и аутентификацию по смарт-картам.

Возможность управления параметрами подключения (качеством картинки, максимальным FPS) из консоли View Manager и через групповые политики.

Возможность подключения к рабочим станциям не только с нулевых клиентов, но и с любого устройства, на котором установлен программный клиент VMware View Client (под управлением ОС Windows, Linux, Mac OS X, iOS, Android).

Возможность удаленного подключения с помощью View Secure Server через Интернет.

Однако, следует отметить, что все "фишки" PCoIP Host Card вроде поддержки графических адаптеров или аппаратной обработки PCoIP в связке с VMware View работают только при подключении по протоколу PCoIP и не работают при подключении по RDP или HTTP (VMware Blast).

Продолжение по ссылке: http://blog.vmpress.org/2013/09/pcoip-2.html