Массовый (и часто вынужденный) перевод проектов на «удаленку», организация распределенных команд и продуктивной работы из любой точки мира — болезненная задача для всех использующих производительное оборудование и ресурсоемкий софт. Домой их по ряду причин не перенесешь, а вот организовать качественный удаленный доступ из любого места без лишних затрат все-таки можно. Рассказываем о первом проверенном нами способе комфортной «удаленки» практически с любого устройства.

В чем проблема, док?

Рядовому сотруднику достаточно подключения к удаленному рабочему столу по протоколу RDP или доступа к корпоративным ресурсам с собственного ноутбука, и здесь у айтишников возникают только сложности с обеспечением безопасности. Если специалисту нужны использующие 3D-ускорение ресурсоемкие приложения, это проблема совершенно другого уровня. 

Информационное моделирование зданий (BIM), разные виды проектирования (CAD, CAM и т. д.), геологическое моделирование, связанные с рендерингом задачи, работа с нейросетями и даже создание приложений — серьезные расчеты невозможны без графических процессоров, а для доступа к производительной рабочей станции или серверу обычного Remote Desktop зачастую не хватает. Установить оборудование на дому, как правило, невозможно: слишком много препятствий, вроде отсутствия в помещении необходимой инженерной инфраструктуры или недостаточно высокой пропускной способности каналов передачи данных (информация для обработки обычно хранится внутри корпоративной инфраструктуры).

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

Недостатки коммерческих решений 

Задача обеспечить работу из дома на производительной станции обычно решается с помощью специальных продуктов (Citrix, Horizon) и аппаратных средств, вроде карт и ПО Teradici.

Такие варианты подходят далеко не всем по причине:

  • существенной стоимости подписки/лицензий;

  • высокой сложности ПО, которое не сможет установить необученный администратор;

  • серьезных требований к клиентскому устройству;

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

Как мы уже говорили, в офисах более популярны машины с игровыми картами NVIDIA. Ориентируясь на них, мы проверили более удобный и доступный вариант. О нем и расскажем.

Бесплатная альтернатива  

Связанные с удаленным использованием графического процессора задачи решает Moonlight. Этот бесплатный программный продукт с открытым исходным кодом использует протокол NVIDIA GameStream. Он связывает сервер и клиентское устройство и обеспечивает мгновенное удаленное взаимодействие сотрудников с офисными настольными компьютерами и рабочими станциями из любого места. 

Попробовать Moonlight для удаленной работы стоит, если вы заняты:

  • BIM, CAD, CAM и другими видами проектирования;

  • проектированием и обучением нейросетей, включая data science;

  • фармакологическими и медицинскими исследованиями;

  • рендерингом;

  • разработкой ПО.

Два основных достоинства Moonlight:

  • кросс-платформенность. Клиентские приложения работают на Windows, MacOS, Linux и Android;

  • независимость от технологий вендора — в отличие от NVIDIA Shield, Moonlight связывает не только «кошерные» устройства. Совместимый видеоадаптер и софт GeForce Experience должны быть установлены на сервере, а для клиента годится видеокарта любого производителя. 

Другие преимущества Moonlight:

  • низкая задержка подключения и возможность получить на устройстве-клиенте до 60 кадров в секунду;

  • возможность передачи изображения с разрешением до 4К;

  • простота использования.

Особенности установки Moonlight

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

Для начала стоит разобраться с архитектурой Moonlight:

Теперь обратим внимание на важные моменты

Первый: на хосте обязательно должны быть установлены видеокарта NVIDIA с поддержкой GeForce Experience (начиная с GeForce GTX 650 и старше), Moonlight Internet Hosting Tool и приложение GeForce Experience. На клиентском устройстве нужно только приложение Moonlight.

Второй момент: в GeForce Experience следует настроить работу NVIDIA Shield. Для этого достаточно перейти в параметры приложения, выставить переключатель в положение «включено» (зеленый) и добавить путь к утилите mstsc.exe: «C:\windows\system32\mstsc.exe».

Эта настройка предоставляет удаленный доступ к рабочему столу через Moonlight. При первом подключении к серверу необходимо ввести пароль для панели управления NVIDIAGeForce Experience (он высветится в клиенте Moonlight).

Пароль будет запомнен для IP-адреса сервера. Moonlight слушает следующие порты:

  • TCP 47984, 47989, 48010;

  • UDP 47998, 47999, 48000, 48002, 48010.

Третий момент: для удаленного управления сервером не следует использовать протокол RDP, так как он не позволяет настраивать NVIDIA Shield. Для доступа к рабочему столу вам потребуется клиент VNC:

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

Стабильность и комфорт работы с Moonlight зависит от качества интернет-соединения. Разработчики рекомендуют использовать программу при скорости исходящего потока от клиентского устройства пользователя к серверу не менее 5 Мбит/с. Обычно для этого клиенту требуется кабельное подключение к Интернету. 

При этом на рекомендуемой скорости, как показали тесты, стабильное изображение можно получить только в разрешении 800 х 600. А на модеме с DOCSIS/DSL 6M удалось увидеть нормальную картинку в 3Д с разрешением 1024 х 768. На практике выяснилось, что для HD и 4К нужны оптоволоконный Интернет скоростью не ниже 100 Мбит/с и аналогичное подключение со стороны сервера / рабочей станции.

Moonlight позволяет проводить гибкую настройку качества передачи изображения с хоста на локальное устройство пользователя:

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

Разрешение

Кадры/с (FPS)

Битрейт Мбит/с

720p, 1280 x 720

30

5–10

1080p, 1920 x 1080

60

20

1440p, 2560 x 1440

60

40

4K/2160p, 3840 x 2160

60

80

И пятый: на качество работы с Moonlight также влияет задержка при интернет-соединении (Latency). Она может определяться расстоянием между сервером и клиентом, топологией сети, загрузкой каналов, сбоями в работе оборудования и иными причинами. В процессе нашего тестирования задержка не превышала 80 мс, что соответствует необходимому для комфортного гейминга и работы с ресурсоемким ПО показателю.

ВАЖНО! Для корректной работы Moonlight на сервере в GPU должен быть подключен монитор или вставлена HDMI/DisplayPort-заглушка, иначе разрешение не поднимется выше базовых 800 х 600.

Подробную инструкцию по использованию Moonlight на наших серверах можно найти здесь

Проверили на практике: примеры работы Moonlight

Для иллюстрации работы программного обеспечения мы провели несколько тестов:

  • просмотр видео Big Buck Bunny 60fps 4K;

  • сцены The Junk Shop в Blender;

  • геймплей Hellblade Senua's Sacrifice с максимальными настройками графики.

Мы решили воспроизвести рабочую ситуацию и в офисе HOSTKEY запустили тесты на машине со следующими характеристиками:

Операционная система

Microsoft Windows Server 2019 Standard

Процессор

Intel Xeon E-3-1230, v6, 3,5 ГГц

Графический процессор

NVIDIA GeForce GTX 1080 Ti (11 Гб)

Оперативная память

16 Гб

При запуске Moonlight на клиенте была получена стабильная трансляция с разрешением 3840 x 2160 и 60 FPS при битрейте в 80 Мбит/с. Отклик приложений был плавным и практически не отличался от управления непосредственно на том устройстве, на котором установлено программное обеспечение. 

Здесь можно посмотреть записи трансляций:

Видео Big Buck Bunny

Blender

Hellblade Senua's Sacrifice

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

В следующих постах мы расскажем о других вариантах полноценного удаленного доступа к ПО и оборудованию для рендеринга, проектирования и обучения нейросетей.

Комментарии (15)


  1. uldashev
    11.12.2021 00:28

    Мда, как всегда, из обещаний получился пшик, на какую аудиторию рассчитан данный продукт? 20Mb ps - 10 работников и исходящий канал не менее 2Gb ps, не всякий провайдер обеспечит такой канал, да за вменяемые деньги, а уж задержки, мм...

    Идея RDP - передавать не картинку, а информацию об объектах на экране, со времен 2008го сервера несколько потеряла свою актуальность, так что на данный момент, альтернатив вэбу просто технически не существует.


    1. Calc
      11.12.2021 00:30

      Это древний спор что лучше, RDP или VNC


    1. cepera_ang
      11.12.2021 06:00

      Почему пшик? Если канал позволяет смотреть ютуб всем сотрудникам пока они были в офисе, то он же позволит транслировать видео с экрана из офиса всем сотрудникам. А задержки, задержки в пределах города бывают удивительно низкими, особенно если провайдер один. Теоретически, скорость света позволяет получить 1мс RTT до 100км.


  1. cepera_ang
    11.12.2021 05:52

    К слову, RDP при правильных настройках даёт те же 60 кадров в секунду. Из плюсов — может подключаться несколько пользователей к одному компьютеру (так и использую дома — два человека с одного мощного компа). Из минусов — невозможно играть, потому что всем играм нужно относительное положение мышки, а RDP передает абсолютное.


    1. Nnnnoooo
      11.12.2021 16:43

      На рдп при любых настройках будут небольшие косяки и при любых настройках будет пропуск кадров например на видео 4к 60Hz


      Главный плюс RDP универсальность и очень неплохая работа на херовых каналах связи.
      RDP идеален для офисной работы или например для кодинга (если не важна 100% цветопередача, т.к. есть минимальные артефакты кодирования). Если много постоянно меняющегося контента (видео, анимация на весь экран, игры) rdp не самый лучший вариант. Да лучших то вариантов и нет наверное — везде свои косяки, сабж только для нвидии, парсек платный для больших разрешений и требует онлайн подключения.


      Так же у RDP очень кривое аудио Вот так и не придумал как получить нормальное аудио внутри Hyper-V виртуалок. И GPU-P виртуализация прекрасно работает и сами виртуалки летают, но качество звука — типичное для рдп гуано. 60 фпс хардварного 3Д в стандартной сессии — без проблем, но в ней вообще нет аудио :( В расширенной сессии — есть аудио, но фиговое, но из-за рдп подключения и качество картинки хуже и нагрузка на проц/видео выше (лишнее кодирование/декодирование) и кадров значительно меньше.


      1. cepera_ang
        12.12.2021 11:32

        Что такое стандартная и расширенная сессии?


        1. easyman
          12.12.2021 11:37

          https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/user-guide/enhanced-session-mode


          1. cepera_ang
            12.12.2021 12:01

            А, так это что-то специфическое для виртуализации, я думал это разные типы подключения самого RDP.


            Тогда я хз какие там проблемы с качеством изображения, правда 4К 60Гц не пробовал — нет таких буржуйских девайсов :) Но это для любого решения будет проблемой, ведь все эти варианты, что парсек, что RDP, что ещё бог знает что, по сути шлют просто видеопоток с рабочего стола, без особых заморочек, а благодаря 444 кодированию это даже и текст не жрёт, и в принципе способно работать с такой скоростью благодаря аппаратным кодерам. Но канал потребует реально жирный на такое дело.


            1. Nnnnoooo
              12.12.2021 21:16

              Так речь о локальном инсталле.
              Виртуалки как удобные песочницы.
              И проблема что RDP значительно ухудшает пользовательский опыт.
              Но оно и понятно — мелкософту локальные инсталлы виртуалок не интересны, им подавай облака.
              Найти бы что-то нормальное для проброса аудио из Hyper-V виртуалки, тогда можно было бы пользоваться стандартной сессией, без нагрузки на проц и видео и с нормальным fps


              1. cepera_ang
                12.12.2021 21:20

                Virtual Cable? Видел у буржуев в туториалах.


                1. Nnnnoooo
                  12.12.2021 22:25

                  Неее, тот что в мануалах, только для того чтобы в системе появился хоть какой-то адаптер, парсек тогда сможет его пробрасывать. Просто его используют потому что удобно, хоть и задача у него другая — роутить звук (входы/выводы) внутри одной системы. А виртуалка — это уже другой комп.


  1. freezlite
    11.12.2021 20:03

    Parsec оч хорошо работает минимальное время отклика, хорошие настройки и работает с амд


    1. Nnnnoooo
      12.12.2021 21:23

      минимальное, но все равно лаг есть — плюс напрягает видяху кодированием. Если честно не представляю как могут через него в шутеры играть, я даже в десктопе этот лаг ощущаю и если минут 15 поработать то терпимо, но чем дальше тем быстрее устаю :( Даже у looking glass в линуксе есть небольшой лаг, так там нет ни сжатия, ни кодирования, а просто копирование во фреймбуффер (похоже как в стандартной сессии Hyper-V)


      1. freezlite
        12.12.2021 21:43

        Parsec дает лаг в 8 мс на кодирование и раскодирование в сумме. У вас лагов будет из-за потерь больше без кодировки потому что fullhd на 60 фпс это очень много. Я лично просев по производительности не заметил из за кодирования h265


        1. Nnnnoooo
          12.12.2021 22:38
          -1

          Мне важно не только отсутствие лагов, но и точная попиксельная цветопередача, поэтому абсолютно все такие пробросы видео автоматом идут в сад


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


          А если попробовать запустить парсек на встройке, то будет вообще печально учитывая что кодирование и декодирование на одном компе. А если несколько виртуалок (равно несколько рабочих столов одновременно). Да и вообще парсек — для запуска только одной копии, если запускать несколько одновременно, то вообще печально