Как ускорить DameWare Mini Remote Control
Уже по наличию этой статьи очевидно что DW — далеко не самое дружелюбное приложение для удалённого администрирования. За то одно из самых старых. Отсутствие программных закладок в нём проверенно временем. Обойти лицензию (осуждаю) — всего пару кликов. Его функционал просто огромен, а системные требования ниже плинтуса.
Довольно много организаций всё ещё используют его и их можно понять.
Чтобы было проще, договоримся об условных обозначениях:
Клиент — компьютер пользователя, которым удалённо управляет администратор.
Оператор — компьютер администратора, с которого удалённо управляют другими компьютерами.
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 простым перетаскиванием.
Можно задать настройки для конкретного хоста.
В окне Remote Connect выбираем его в Saved Host List и вверху этого окна кнопка Settings.
Можно задать настройки для хостов по умолчанию. Они будут применяться к хостам, которые создаются в Saved Host List путём ввода адреса или кнопки New. После изменения настроек будет предложено применить их ко всем существующим хостам, к папке внутри Saved Host List, если вы создавали такие, или выбрать отдельные хосты.
В главном окне View > Default Host Properties
Настройки захвата экрана
Они применяются к захвату экрана если Mirror Driver не используется и полностью игнорируются если Mirror Driver используется.
Разумеется Port Number к захвату экрана не относится.
Настройки Mirror Driver
Они применяются к Mirror Driver если он используется и полностью игнорируются если не используется.
Попытка использования Mirror Driver
Именно попытка. Если параметр включён, но Mirror Driver окажется недоступен, всё ровно будет использоваться режим захвата экрана. При подключении к объектам Remote Host List всегда будет использоваться захват экрана.
Настройки Mirror Driver
Их всего 3. Все на одной, представленной выше вкладке.
Display Settings — глубина цветности виртуальной видеокарты. Это не влияет на физическую видеокарту и изображение на мониторе клиента. Меньше цветов — меньше данных передавать по сети, меньше нагрузки на процессор чтобы рендерить изображение, но и само изображение хуже. Я считаю оптимальным вариантом 16 Bit. Если уж совсем экономить можно и 8 Bit, это ещё быстрее, но смотреть на такое сложно.
Скрытый текст
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 — то есть весь экран это одна большая линия.
Скрытый текст
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 более эффективно.
Нет плохих приложений, всеми можно научиться пользоваться. Порой это совсем не просто.