Терминальные клиенты для запуска графических приложений
Задача
Запуск приложений, активно использующих двумерные и трехмерные графические функции, на удаленном компьютере (сервере) с просмотром на локальном (клиенте).
Преимущества
- Унификация ПО
- Упрощенное администрирование клиентских компьютеров
Недостатки
- Сложность доступа к внешним устройствам клиентского компьютера
- Падение производительности
- Зависимость от качества сети
- Более сложный принцип масштабирования
Варианты решения
- ?Публикация приложений?: базовая установка ОС на клиент + запуск специфических приложений на сервере
+: ?прозрачный? запуск
+: меньшая нагрузка на сервер
+/-: разнообразие клиентских ОС и профилей
--: необходимость синхронизации локального и удаленного файловых пространств
?Удаленный рабочий стол?: специфическая минимальная установка ОС на клиент (т. н. прошивка) + запуск всех приложений на сервере с доступом по терминальному протоколу
+: возможность отключения и подключения сеанса, в т. ч. при смене рабочего места
-: необходимость доступа к локальным внешним устройствам
-: большая загрузка сервера
- ?Удаленная виртуальная машина?: прошивка на клиенте + запуск на сервере персонального виртуального окружения с полной клиентской ОС
+: установка индивидуальной ОС в каждое виртуальное окружение
-: необходимость доступа к локальным внешним устройствам
-: еще большая загрузка сервера
-: потеря производительность за счет виртуализации
Подзадачи
- 2D-рендеринг
- 3D-рендеринг
- Рендеринг потокового видео
- Доставка изображения
Сопутствующие подзадачи:
- Подготовка, модификация и доставка прошивки.
Учет аппаратных ресурсов
- Загрузка сервера и клиента
- Производительность рендеринга
- Пропускная способность сети
Ссылки
http://www.virtualgl.org/ ? рендеринг 3D на сервере
- Пересылка с помощью LD_PRELOAD вызовов OpenGL на местный X-сервер
- Пересылка экзотических GL-запросов напрямую (например, в виде indirect-запросов)
- Собственный транспорт при работе с X11 протоколом
- Возможность 2D-рендеринга как на клиенте (X11+VGL), так и на сервере (VNC)
- Встроенные средства измерения производительности
- Возможность расширения с помощью plugin-ов
http://www.cendio.com/products/thinlinc/ ? какие-то люди, фарцующие желтыми штанамитерминальными клиентами под Linux, спасибо им за предыдущую ссылку
- Несвободная лицензия на продукт в целом
- На диске с демо-сервером есть некоторые исходники; в частности, VNC server, RDP server и SSH пересобраны с какими-то патчами, есть и свои свободные наработки
- В целом создается впечатление, что значимо убыстрить графику по сравнению с аналогичным полностью свободным программным наполнением им не удается
Поддержка 3D в VirtualBox под Linux пока не до конца работает, см., например, https://forums.virtualbox.org/viewtopic.php?f=4&p=100671
3D-рендеринг
Если исключить вопросы прямой производительности и пропускной способности, главная задача ? обеспечить производительный 3D-рендеринг, т. к. 2D не потребляет слишком много ресурсов, и может быть просчитан на процессоре как клиента, так и сервера.
3D-рендеринг на клиенте
- Строго говоря, поддерживается при использовании ?голого? X11 протоколом OpenGL с помощью indirect-запросов (LIBGL_ALWAYS_INDIRECT и т. п.)
Имеются проблемы с 2D (возможно, обработкой 2D с помощью GL из-за доставки толстого 2D-потока), померять
VMWare заявляют, что задача ими как-то решена (скорее всего, закрытые драйверы и клиентские программы для некоторых ОС)
- Что-то подобное есть в Windows, только они этим совсем не хвастаются; похоже, не работает
3D-рендеринг на сервере
- !VirtualGL
???
Распознавание и обработка потокового видео
Если часть довольно большой картинки постоянно меняется, возникает проблема доставки потока.
TODO: исследовать возможности распознавания и/или декларации таких областей (NX? VNC?), отказа от декодирования видео на сервере (с передачей кодированного потока на клиент) и т. п.
Стенд
- ?Публикация приложений?: virtualgl ? X11+VGL
+ ?Прозрачная? отсылка к 3D-рендерингу на сервере, не требуется адаптация приложений
- Большое потребление сетевых ресурсов (по утверждению авторов, >100Mb/s,
померять)
-- Использование одного X-сервера всеми приложениями (разных пользователей!) ? издевательство над безопасностью
- SETUID и SETGID игнорируют LD_PRELOAD, приходится извращаться
- ?Удаленный рабочий стол?: virtualgl + VNCserver ? VNCclient
+ Регулировка объема доставляемого потока качеством картинки VNC
- Использование одного X-сервера VNC-серверами различных пользователей
?Удаленная виртуальная машина?: virtualgl + VirtualBox + VNCserver ? VNCclient
- Недостаточная поддержка 3D-рендеринга в VirtualBox (гостевая ОС видит видеокарту "VirtualBox", а не, скажем, NVIDIA)
- Отсутствие поддержки VirtualBox в libvirt и отсутствие 3D-рендеринга в подсистемах виртуализации, поддерживающихся libvirt
Не проверена работоспособность 3D-рендеринга в гостевых ОС Linux