RemoteFX. Часть 1 — теория

Пару недель назад Microsoft представила общедоступную предварительную версию первого Пакета обновления (Service Pack 1) для Windows 7 и Windows Server 2008 R2, о чём мы тогда писали. Ключевыми нововведениями в представленном пакете обновлений стали поддержка динамической памяти (Hyper-V Dynamic Memory) и технология RemoteFX. Статью о первой мы скоро представим, пока же поговорим о RemoteFX.

Итак, что же скрывается за названием RemoteFX? Два года назад Microsoft купила компанию Calista Technologies, разрабатывающую решения для передачи по сети видео и прочих данных. Доработанная версия RemoteFX позволяет пользователю комфортно работать по протоколу Удалённого рабочего стола (Remote Desktop Protocol, RDP) с видео высокой чёткости и прочей сложной графикой в любых форматах — включая Silverlight, Direct3D 9.0c, трёхмерные модели и, конечно, Windows Aero. Кроме того, он обеспечивает полную поддержку двухсторонней синхронной аудиопередачи и низкоуровневое подключение любых устройств USB к удалённой рабочей станции, но это мы обсудим в одной из следующих статей.

RemoteFX накладывает существенные аппаратные требования на серверы виртуализации. Именно поэтому предполагается, что в основной массе RemoteFX найдёт применение в новых проектах VDI, а не при усовершенствовании уже существующих инфраструктур.

  • Процессоры на сервере должны поддерживать Second Level Address Translation (SLAT) — т.е. Intel Extended page tables (EPT) или AMD Rapid Virtualization Indexing (RVI).
  • Видеокарта на сервере должна поддерживать DirectX 9.0c и DirectX 10.0 и иметь достаточный объем видеопамяти, которого хватит на выполнение задач во всех виртуальных машинах в зависимости от разрешения экрана. Поддерживаются как встроенные видеокарты, так и внешние устройства формата appliance.
  • Если в сервере установлено несколько видеокарт или подключено несколько устройств формата appliance, то такие устройства должны быть на одинаковых графических чипах. (Всего сейчас поддерживается до четырёх видеокарт в одном сервере).
  • Живая миграция виртуальных машин, в которых используется RemoteFX, требует наличия на серверах одинаковых видеокарт.

Какие видеокарты поддерживают RemoteFX? Технически, работать она должна на любом устройстве, совместимом с DirectX 10. Однако, мы вкладываем в слово «поддержка» особое значение, так что для получения официальной технической поддержки требуем подтверждения работоспособности в лабораторных условиях. На данный момент протестированы следующие решения. К моменту окончательного выхода Windows Server 2008 R2 Service Pack 1 их число должно расшириться.

Производитель

ATI

NVidia

Чипы, прошедшие проверку и получившие логотип

  • FirePro: 5800, 7800, 8800;
  • FireStream: 9270.
  • Quadro: 880M, 2800M, 3800, 4800, 5800;
  • Fermi (ускоритель следующего поколения, выход в августе и сетябре этого года).

Внешние устройства формата appliance

Quadroplex  2200 S4 (960 ядер CUDA и 16ГБ видеопамяти в форм-факторе 1U. Одного такого модуля хватит на полсотни пользователей с активной 3D графикой).

Технически RemoteFX состоит из следующих элементов.

  • с точки зрения Hyper-V — очередная пара компонентов, обменивающихся данными через VMBus:
    • VSC (Virtualization Services Consumer) в виртуальной машине — новое синтетическое виртуальное устройство, видеокарта. Приложения, запущенные в виртуальной машине, работают с ней как с обычной видеокартой, поддерживающей DirectX 9;
    • в роли VSP (Virtualization Service Provider) выступает компонент под названием RCC (Render, Capture, Compress), который выполняется в родительском разделе (по одному экземпляру для каждой ВМ, использующей RemoteFX);
  • с точки зрения RDP — новый тип данных в «Виртуальном канале» (Virtual Channel, VC) передачи видео.

Как же выглядит архитектура взаимодействия служб интеграции Hyper-V с физическим оборудованием и компонентами ОС на сервере виртуализации?

Этап отрисовки графики (Render) происходит по следующей схеме.

Здесь компонент RCC играет роль посредника по передаче инструкций DirectX 9 от виртуальной машины физической видеокарте, установленной в сервере.

Захват и кодирования видеопотока (Capture and Compress)  выглядит примерно так.

Обратите внимание на то, что первый этап сжатия выполняется на видеокарте, и здесь уже используются алгоритмы DirectX 10. Второй этап сжатия выполянется на процессоре (CPU).

Для того, чтобы увеличить производительность и масштабирование, вы можете воспользоваться устройством нового типа, который называется RemoteFX ASIC (Application-Specific Integrated Circuit). Это устройство фактически реализует кодек RemoteFX на аппаратном уровне, что снимает нагрузку по сжатию с видеокарты и процессора. (Надо понимать, что задачи отрисовки, показанные на предыщуей схеме, по-прежнему остаются на видеокарте. Так что ASIC не заменяет, а дополняет её). Очевидно, что использование такого устройства не является необходимым условием для работы RemoteFX. Однако мы ожидаем, что в скором будущем большинство серверов, предназначенных для выполнения роли VDI, будут оснащены микросхемами RemoteFX ASIC — это значит, что вам не придётся отдельно задумываться об этом и покупать дополнительные устройства.

Кроме того, из последней схемы становится понятно, почему для задач виртуализации RemoteFX работает только с Hyper-V, но не с другими платформами виртуализации. Посудите сами — ведь в виртуальной машине вы устанавливается компонент VSC, для работы которого необходим RCC на стороне гипервизора.

В заключение предлагаю всем посмотреть на пример RemoteFX в действии.

[Video]