Удаленный доступ к экрану проброшенной с помощью QEMU/KVM видеокарты

В результате экспериментов по пробросу физической видеокарты в виртуальную машину выяснилось, что пробрасывается только непосредственно оборудование, доступ же к экрану удаленно (не через выходы видеокарты, а через клиент удаленного доступа к виртуальной машине) остается не возможен.

Получить удаленный доступ к экрану проброшенной видеокарты виртуальной машины можно за счет:

  • использования программного обеспечения для обеспечения удаленного доступа
  • подключение аппаратного видеотранслятора к выходу проброшенной видеокарты,
  • проброс специальной «облачной» видеокарты со встроенным видеотранслятором.

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

Существует широкий ассортимент программного обеспечения для обеспечения удаленного доступа которое можно установить в виртуальную машину которое будет осуществлять вывод с фреймбуфера проброшенной видеокарты:

Данное программное обеспечение,  если не тормозит (как VNC), то не только загружает процессор виртуальной машины и забивает память тем самым снижая её производительность, но также может забивает Интернет канал так как трафик может посылаться не на прямую от виртуальной машины к клиенту, а через закрытый сервер-посредник.

Существуют также другие средства удаленного доступа Microsoft RDP, RemoteAdmin, но они не достойны внимания так как они не оперируют с фреймбуфером проброшенной видеокарты.

Аппаратные видеотрансляторы

Аппаратные видеотрансляторы — устройства подключаемые к выходу видеокарты, которые осуществляют кодирование и передачу видео по сети.

Существуют совсем не дешевые коробочные продукты такие как «Epiphan VGADVI Broadcaster» и менее дешевые карты захвата такие как "AverMedia Live Gamer HD", "Epiphan DVI2PCIe" для доработки персонального компьютера в аппаратный видеотранслятор.

Существует также возможность использования обычной карты для захвата аналогового сигнала или даже ТВ-тюннера как вместо карты захвата цифрового источника HDMI/DVI в случае использования цепочки преобразователей.

Конечно благодаря цепочке аналогово-цифровых преобразований задержки будут иметь место, но данное решение может стать доказательством концепции (proof-of-concept)  возможности того что видео можно транслировать дешевой картой захвата с аналогового источника.

Рассмотрим цепочки преобразований для транслирования через аналогово-цифровое преобразование и без него.

Цепочка преобразований в аналоговый сигнал для выхода проброшенной видеокарты:

  1. видеокарта — формирует VGA или DVI-сигнал
  2. адаптер — конвертирует DVI-сигнал в VGA-сигнал (если у видеокарты нет VGA-выхода)
  3. преобразование видеосигнала
    1. видеоконвертор — преобразует VGA-сигнал в композитный видеосигнал определенного видеостандарта (PAL, SECAM, NTSC). Требует питание, не большие задержки, небольшая стоимость. [ Пример: http://www.chipdip.ru/product/vasmon4/, Схема: http://www.epanorama.net/circuits/vga2tv/vga2palntsc.html ]
    2. простой адаптер - преобразует из VGA-сигнал в сигнал S-video (совместим не со всеми видеокартами). Не требует питание, меньшие задержки, низкая стоимость. [ Пример: http://www.amazon.com/S-video-Converter-Adapter-Cable-Laptop/dp/B000P3UB24 ]
  4. карта захвата — оцифровывает полученный видеосигнал и осуществляет его кодирование (в случае наличия аппаратного кодека)
  5. центральный процессор - кодирует видео (если это не было сделано ранее) и отправляет его по сети с помощью сетевой карты

Цепочка преобразований в аналоговый сигнал для выхода проброшенной видеокарты:

  1. видеокарта — формирует DVI или HDMI-сигнал
  2. адаптер — конвертирует HDMI-сигнал в DVI-сигнал или наоборот (если у видеокарты нет выхода соответствующего входу каорты захвата)
  3. карта захвата — кодирует полученный видеосигнал (в случае наличия аппаратного кодека)
  4. центральный процессор - кодирует видео (если это не было сделано ранее) и отправляет его по сети с помощью сетевой карты

Как можно заметить трансляция цифрового видеосигнала  содержит меньшее число преобразований по сравнению с трансляцией аналогового сигнала, а следовательно задержки будут меньше но и это не предел.

Чтобы сократить стоимость видеотранслятора на основе компьютера можно воспользоваться решениями система на чипе или SOC (System on Chip). Например, микроконтролеер Virt2real [ http://virt2real.ru ] обладает стоимостью и энергопотреблением меньшими чем настольный компьютер, может подключаться к сети и аппаратно кодировать видео. В скором будущем разработчиками планируется добавить в микроконтролер возможность подключения цифрового и аналогового (композитного) входов что позволит подключать выход проброшенной видеокарты.

"Облачные" видеокарты

Принцип работы «облачной» видеокарты заключается в том, что построение (рендеринг) изображения и кодирование видеопотока осуществляются в рамках видеокарты это не приводит к значительным задержкам при работе с виртуальной машины и не отнимает её вычислительные ресурсы. Конечно такая функциональность бьёт по цене, но что поделать если всего две компании могут выпускать видеокарты такого уровня — это Nvidia и AMD.

Обе компании и Nvidia и AMD являются лидерами в производстве видеокарт, обе с разницей в год выпустили свои версии облачных видеокарт «Nvidia Grid» и «AMD Radeon Sky». Также компания Nvidia предлагает специальный сервер Nvidia Grid VCA и специальный проприетарный гипервизор VGX который предназначен для запуска виртуальных машин с проброшенными видеокартами. AMD в отличае от Nvidia не создает свое серверное решение класса VCA тем самым не вступает в конкуренцию с  производителями серверов.

Демонстрация работы Nvidia Grid видеокарты

Демонстрация узла виртуализации Nvidia Grid Appliance. 4U сервер с 8 видеокартами Nvidia Grid обеспечивает одновременную работу 16 пользователей:


Цены на "облачные" видеокарты:

Модель

Кол-во ВМ

Цена

Источник информации

GRID K2

2 премиум ВМ

$4,575.95

http://www.amazon.com/NVIDIA-900-52055-0020-000-GRID-Graphics-Card/dp/B00CA5MLCS

GRID K1

4 ВМ

$3,600.00 (новая)

$2,795.00 (б/у)

http://www.amazon.com/NVIDIA-900-52401-0020-000-GRID-16GB-Graphics/dp/B00CA5GCZ0

GRID VCA

16 премиум ВМ

24,900 Евро

+ цена на ежегодную лицензию на ПО

http://www.ferra.ru/ru/networks/news/2013/03/20/NVIDIA-4U-GRID-VCA/

Так как облачные видеокарты не продаются в рознице их придется заказывать у производителя.

Заключение

Использование программного обеспечения не удобно либо приводит к загрузке виртуальной машине и забиванию Интернет-канала и появлению задержек.

Использование аппаратного видеотранслятора требует финансовых затрат, но не защищает от задержек.

Использование облачной видеокарты с одной стороны не дешевый, с другой стороны более зрелый и может использоваться для оказания услуг на коммерческой основе.