Использование OpenSource-компонентов в сервисе game-stream
LVEE 2018
Введение
В настоящее время активно развивается направление games as a service. Основной задачей таких сервисов является предоставление возможности потребителю быстро и, главное, не имея достаточных вычислительных ресурсов, получить игровой опыт неотличимый от запуска игры на своем компьютере.
Подобные сервисы существуют достаточно давно, но зачастую являются проприетарными и недоступными для использования, кроме как в потребительских целях на платной основе.
Основной предпосылкой появления возможности трансляции игр в виде видео-потока на компьютер пользователя стало появление в системах виртуализации технологии проброса графического адаптера (либо части графического адаптера) в виртуальную машину. Эта технология обширно используется в профессиональной среде с CAD-приложениями, давая возможность разделения одного мощного графического адаптера на несколько потребителей.
Также существуют и другие возможности применения данной схемы – например, математическое расчеты на GPU, построение 3D-моделей, рендеринг видео и другие.
Разрабатываемая автором по данной схеме система потокового game-сервиса является универсальной и полнофункциональной. Её особенности раскрыты ниже.
Архитектура
Архитектура подобного рода сервисов зачастую является “конструктором” из множества различных по функциональному назначению модулей и компонентов:
- аппаратная платформа;
- ОС для аппаратной платформы;
- ОС для виртуальных машин;
- средства управления и оркестрации;
- средства кластеризации и распределения нагрузок;
- приложения.
Front end и биллинг
В качестве опорных точек при разработке были выбраны некоторые основные аспекты:
- Каждое приложение – это отдельная виртуальная машина.
- Все функции по обслуживанию виртуальных машин берёт на себя система виртуализации.
- ОС для запуска приложения должна быть стабильным LTS-дистрибутивом GNU/Linux.
- Система виртуализации имеет функционал частичного проброса графического адаптера.
- Возможность использования как на физических серверах в собственном ЦОД, так и на арендованных выделенных серверах облачных провайдеров.
Обоснование выбора компонентов
Аппаратная платформа
В зависимости от сложности приложений необходимо учитывать вычислительные мощности; поэтому было разработано несколько концепций вычислительно сервера и его усредненная модель:
- 2 CPU Intel Xeon 8 core 2.66 ГГц;
- 128 GB RAM;
- 4 карты Nvidia Tesla P100;
- корпус с возможностью установки графических карт.
ОС для аппаратной платформы
Выбор системы виртуализации первоочередно обоснован возможностью проброса графического адаптера в ВМ, и самой продвинутой по этой части из свободных платформ на данный момент является XCP-next generation (основанный на базе XEN Server, под лицензией GNU General Public License). Также и все библиотеки Nvidia, необходимые для осуществления требуемого функционала, распространяются на свободной основе.
Система имеет возможности частичного и полного проброса, встроенные средства управления кластером, мониторинга, резервного копирования и полностью совместима с гипервизором, используемым в AWS, что дает возможность развертывания платформы в арендованных облаках.
В дополнение к функционалу гипервизора была добавлена система оркестрации XenOrchestra (также под свободной лицензией, AGPLv3).
ОС для виртуальных машин
Для запуска большинства игр из библиотеки Steam, которые совместимы с ОС Linux, необходима Debian-подобная система (Steam OS). Именно стабильная версия ОС Debian 9 легла в основу золотого образа. Также могли бы быть использованы и другие ОС: SteamOS в режиме киоска, Ubuntu 16.04 LTS для разработки и создания игр на графическом движке Unreal Engine 4.
Во всей архитектуре использована концепция “одна игра = одна виртуальная машина”, такой подход позволяет легко клонировать и перемещать игры внутри вычислительного кластера, разделять ресурсы, и быстро запускать игры по запросу пользователя.
Front end и биллинг
В отношении клиентской части перед командой разработчиков стояла задача разработки системы биллинга и конечного клиентского приложения, но существует возможность использования и готовых решений.
Стрим-приложения
Непосредственно захват изображения, рендеринг, кодирование его для передачи производились на графическом адаптере. Новые поколения графических карт имеют возможность одновременной работы как рендерера, так и энкодера – при помощи всего лишь стандартного функционала. Для программной обработки были использованы свободные библиотеки OpenBroadcasterSoftware (GNU General Public License, version 2) и стандартный функционал приложения.
Сравнение производительности
При развёртывании стенда для тестирования производительности полученной системы и сравнения её с аналогами были использованы также готовые виртуальные машины на AWS, основанные на Windows 2016 Server. Результаты тестирования отличались на уровне погрешности, но следует заметить, что платформа, основанная на свободном ПО, отличается большей гибкостью и возможностями применения, проприетарная же платформа ограничена играми. Если использовать платформу только для игр, то платформа на основе Windows находится в преимуществе исключительно из-за количества доступных игр.
Заключение
Разработанная архитектура прошла все этапы тестирования и успешно используется для различных целей, а также она легко адаптируема под такие задачи, как разработка и стриминг игр, обработка 3D-графики, CAD-приложения, демонстрационные 3D-приложения, вычисления с использованием GPU.
Легкость адаптации, бесконечное горизонтальное масштабирование, возможность использования на арендованных и гибридных облаках делают систему универсальной платформой и мощным инструментом, собранным исключительно из свободных компонентов.
Abstract licensed under Creative Commons Attribution-ShareAlike 3.0 license
Back