Как ускорить DameWare Mini Remote Control

Уже по наличию этой статьи очевидно что DW — далеко не самое дружелюбное приложение для удалённого администрирования. За то одно из самых старых. Отсутствие программных закладок в нём проверенно временем. Обойти лицензию (осуждаю) — всего пару кликов. Его функционал просто огромен, а системные требования ниже плинтуса.
Довольно много организаций всё ещё используют его и их можно понять.

24d78c90091d18c23da442698b69b439.png

Чтобы было проще, договоримся об условных обозначениях:
Клиент — компьютер пользователя, которым удалённо управляет администратор.
Оператор — компьютер администратора, с которого удалённо управляют другими компьютерами.
MRC — та часть DameWare, которая устанавливается на оператора.
Agent — та часть DameWare, которая устанавливается на клиенты.

Что именно будем ускорять

Дело в том, что по умолчанию в DameWare заданы не совсем оптимальные настройки. При первом взгляде на DameWare может быть не очевидно, что и где можно покрутить, и ещё менее очевидно — что именно эти настройки делают. Об этом я и расскажу.

Как работает DameWare Mini Remote Control

От оператора к клиенту передаются события ввода с клавиатуры и мыши, а в ответ клиент отправляет изображение. События ввода не нуждаются в ускорении и разбирать их я не буду. Передача изображения имеет 2 режима:

Mirror Driver — при установке Agent создаётся виртуальная видеокарта. Её даже можно увидеть в Диспетчере устройств. Теперь инструкции рисования отправляются одновременно на 2 видеокарты: физическую и виртуальную. В обычном состоянии данные, входящие на виртуальную видеокарту уходят в пустоту. При использовании DameWare, Agent захватывает данные, входящие на виртуальную видеокарту, и в сыром виде отправляет их MRC, который в свою очередь рендерит изображение силами процессора оператора и отображает результат в своём окне. То есть между клиентом и оператором не передаётся готовая картинка, которую можно было бы сразу отобразить на мониторе. Поскольку это поток сырых данных, частотой кадров и областями обновления управлять нельзя. Mirror Driver работает только при прямом подключении. К объектам Remote Host List его не применить.
Это позволяет без проблем непрерывно видеть изображение. В том числе Winlogon (экран блокировки и вход в систему), UAC (запрос прав администратора), всякие оверлеи антивирусов и даже некоторые плееры с DRM-защитой, чего нельзя увидеть при захвате экрана.
В контексте DameWare по сравнению с захватом экрана это работает быстрее, снижает нагрузку на процессор клиента, но повышает нагрузку на процессор оператора, при правильных настройках снижает нагрузку на сеть, сохраняя плавность трансляции. На 32-битных системах Mirror Driver может просто не работать или даже при установке вызвать перезагрузку, синий экран, глухое зависание и подобные проблемы. Могут возникнут проблемы с отображением сложных графических приложений вроде средств 3D-моделирования и игр.

Захват экрана — этот режим используется когда Mirror Driver не установлен на клиенте или его использование отключено в настройках MRC. В этом режиме Agent делает почти то же самое, что и любое приложение для записи экрана (OBS, Bandicam) — программно получает изображение с экрана. Затем готовое изображение отправляется MRC, который просто отображает его в своём окне.
В контексте DameWare по сравнению с Mirror Driver это работает медленнее, повышает нагрузку процессор клиента. При смене первоэкранных событий вроде UAC | Winlogon | Экран безопасности | Рабочий стол, захват экрана перезапускается, изображение пропадает на несколько секунд. У Mirror Driver такого нет. Но за то более гибко управляется: можно выбрать частоту кадров, количество блоков, на которые делится экран, использовать адаптивный битрейт. Это будет работать даже если установка Mirror Driver невозможна. Да и сам Agent можно не устанавливать. Достаточно положить в любую папку и запустить от имени администратора — таким способом я и запустил Agent на Windows XP на скриншоте в начале, хотя установщик сообщает что Agent не поддерживается на этой системе.

О настройках

Настройки можно задавать только для объектов Saved Host List. Чтобы задавать настройки для объектов Remote Host List, Active Directory Computers и других списков, их придётся добавить в Saved Host List простым перетаскиванием.

b722db2e5524b158668dbf7486b9015e.png

Можно задать настройки для конкретного хоста.
В окне Remote Connect выбираем его в Saved Host List и вверху этого окна кнопка Settings.


Можно задать настройки для хостов по умолчанию. Они будут применяться к хостам, которые создаются в Saved Host List путём ввода адреса или кнопки New. После изменения настроек будет предложено применить их ко всем существующим хостам, к папке внутри Saved Host List, если вы создавали такие, или выбрать отдельные хосты.
В главном окне View > Default Host Properties


Настройки захвата экрана

Они применяются к захвату экрана если Mirror Driver не используется и полностью игнорируются если Mirror Driver используется.
Разумеется Port Number к захвату экрана не относится.

51dad651ba5ba1fc9e2d39126e9434d2.png

2fdaebf229b3762097650e0b56046982.png

Настройки Mirror Driver
Они применяются к Mirror Driver если он используется и полностью игнорируются если не используется.

0137a5c3d0e245ebc450b7098f0d4106.png

Попытка использования Mirror Driver
Именно попытка. Если параметр включён, но Mirror Driver окажется недоступен, всё ровно будет использоваться режим захвата экрана. При подключении к объектам Remote Host List всегда будет использоваться захват экрана.

Настройки Mirror Driver

Их всего 3. Все на одной, представленной выше вкладке.

Display Settings — глубина цветности виртуальной видеокарты. Это не влияет на физическую видеокарту и изображение на мониторе клиента. Меньше цветов — меньше данных передавать по сети, меньше нагрузки на процессор чтобы рендерить изображение, но и само изображение хуже. Я считаю оптимальным вариантом 16 Bit. Если уж совсем экономить можно и 8 Bit, это ещё быстрее, но смотреть на такое сложно.

Скрытый текст

a15dedfe94f3d094b9920a3550e388ac.png

Compression Level — уровень сжатия данных, входящих на виртуальную видеокарту, сжатие применяется на клиенте перед отправкой оператору. Этот параметр обязателен. Без него я сделал скриншот из самого начала статьи. В корпоративной сети такое явно неприемлемо. Чем больше сжатие тем больше задержка и нагрузка на процессоры клиента и оператора. На относительно современных процессорах на сжатии 9 я не замечаю ни нагрузку ни задержку.

Delay Between Screen Update — это время на которое нужно отсрочить возобновление трансляции после изменений на экране. Когда изображение статичное, трансляция останавливается. Когда происходят изменения — возобновляется. Если этот параметр задан, при изменениях на экране трансляция возобновляется не сразу, а через указанное время. Эта функция для какой-то экстремальной экономии трафика. Стоит оставить 0.

Настройки захвата экрана

Вкладка Display Options
Здесь лишь глубина цветности. Изображение, полученное путём захвата обрабатывается силами процессора клиента — меняется глубина цветности, и только после этого отправляется оператору. Как выглядит низкая частота я уже показывал в абзаце про Mirror Driver. Оптимальным вариантом так же остаётся 16Bit. Использование любого варианта кроме Remote Default Display немного повышает задержку и нагрузку на процессор клиента, за то снижает нагрузку на сеть и повышает плавность трансляции.

Вкладка Remote Options
Не всё на ней относится к захвату экрана. На картинке выше я отметил что именно.

Compression Level — уровень сжатия изображения перед передачей. Речь про сжатие без потерь. Повышает задержку и нагрузку на процессоры клиента и оператора, но снижает нагрузку на сеть и повышает плавность трансляции. На относительно современных процессорах на сжатии 9 я не замечаю ни нагрузку ни задержку.

Scan Blocks (Scan Lines / Blocks) — количество одинаковых горизонтальных линий, на которые делится экран. Линии сверху вниз поочерёдно проверяются на наличие изменений после предыдущей проверки. Если внутри линии произошли изменения, актуальная версия этой линии отправляется оператору и заменяется в окне MRC. После чего эта же линия проверяется снова. Если она не изменилась — проверяется следующая линия. Перетаскивание окон, анимации, и тем более видео могут временно парализовать трансляцию, постоянно вызывая обновление одной и той же линии. Эта функция тоже смахивает на какую-то экстремальную экономию трафика. Я всегда выбираю 1 — то есть весь экран это одна большая линия.

Скрытый текст

0465a50335edb6053e9a3b8daad77ae4.gif

Delay Between Scan Block Update — время, через которое нужно снова проверить изменённую линию. Если она не изменилась — проверяется следующая. Теоретическая частота кадров получается по формуле:
X = Scan Blocks (Scan Lines / Blocks)
Y = Delay Between Scan Block Update
FPS = Частота кадров
1000 / (Y * X) = FPS

Use Slow Link Optimization — оптимизация для медленного соединения. При медленном соединении немного улучшает ситуацию. При нормальном соединении почти не имеет смысла. Разве что немного снижает нагрузку на сеть. Что именно делает эта оптимизация я не смог понять. Wireshark не помог.

Use Adaptive Streaming — автоматически выбирает битрейт, количество полос, на которые делится экран, и интервал между их проверкой. Это значительно повышает плавность и уменьшает задержку. Повышает колебание нагрузки на сеть — то есть по сравнению с отсутствием данной опции нагрузка при динамичных сценах станет ещё больше, а при статичных — ещё меньше.

Итог

Вот собственно и всё. Держа в голове все эти параметры можно использовать DameWare более эффективно.
Нет плохих приложений, всеми можно научиться пользоваться. Порой это совсем не просто.

© Habrahabr.ru