Терминальные клиенты для запуска графических приложений

Задача

Запуск приложений, активно использующих двумерные и трёхмерные графические функции, на удаленном компьютере (сервере) с просмотром на локальном (клиенте).

Преимущества

  1. Унификация ПО
  2. Упрощённое администрирование клиентских компьютеров

Недостатки

  1. Сложность доступа к внешним устройствам клиентского компьютера
  2. Падение производительности
  3. Зависимость от качества сети
  4. Более сложный принцип масштабирования

Варианты решения

  1. «Публикация приложений»: базовая установка ОС на клиент + запуск специфических приложений на сервере
    • +: «прозрачный» запуск

    • +: меньшая нагрузка на сервер

    • +/-: разнообразие клиентских ОС и профилей

    • --: необходимость синхронизации локального и удалённого файловых пространств

  2. «Удалённый рабочий стол»: специфическая минимальная установка ОС на клиент (т. н. прошивка) + запуск всех приложений на сервере с доступом по терминальному протоколу

    • +: возможность отключения и подключения сеанса, в т. ч. при смене рабочего места

    • -: необходимость доступа к локальным внешним устройствам

    • -: большая загрузка сервера

  3. «Удалённая виртуальная машина»: прошивка на клиенте + запуск на сервере персонального виртуального окружения с полной клиентской ОС
    • +: установка индивидуальной ОС в каждое виртуальное окружение

    • -: необходимость доступа к локальным внешним устройствам

    • -: ещё большая загрузка сервера

    • -: потеря производительность за счёт виртуализации

Подзадачи

  1. 2D-рендеринг
  2. 3D-рендеринг
  3. Рендеринг потокового видео
  4. Доставка изображения

Сопутствующие подзадачи:

  1. Подготовка, модификация и доставка прошивки.

Учёт аппаратных ресурсов

  1. Загрузка сервера и клиента
  2. Производительность рендеринга
  3. Пропускная способность сети

Ссылки

3D-рендеринг

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

3D-рендеринг на клиенте

3D-рендеринг на сервере

Распознавание и обработка потокового видео

Если часть довольно большой картинки постоянно меняется, возникает проблема доставки потока.

/!\ TODO: исследовать возможности распознавания и/или декларации таких областей (NX? VNC?), отказа от декодирования видео на сервере (с передачей кодированного потока на клиент) и т. п.

Стенд

  1. «Публикация приложений»: virtualgl → X11+VGL
    • + «Прозрачная» отсылка к 3D-рендерингу на сервере, не требуется адаптация приложений

    • - Большое потребление сетевых ресурсов (по утверждению авторов, >100Mb/s, /!\ померять)

    • -- Использование одного X-сервера всеми приложениями (разных пользователей!) — издевательство над безопасностью

    • SETUID и SETGID игнорируют LD_PRELOAD, приходится извращаться
  2. «Удалённый рабочий стол»: virtualgl + VNCserver → VNCclient
    • + Регулировка объёма доставляемого потока качеством картинки VNC

    • - Использование одного X-сервера VNC-серверами различных пользователей

  3. «Удалённая виртуальная машина»: virtualgl + VirtualBox + VNCserver → VNCclient

    • - Недостаточная поддержка 3D-рендеринга в VirtualBox (гостевая ОС видит видеокарту "VirtualBox", а не, скажем, NVIDIA)

    • - Отсутствие поддержки VirtualBox в libvirt и отсутствие 3D-рендеринга в подсистемах виртуализации, поддерживающихся libvirt

    • /!\ Не проверена работоспособность 3D-рендеринга в гостевых ОС Linux

FrBrGeorge/GraphicTerminalClient (последним исправлял пользователь FrBrGeorge 2011-12-25 14:18:35)