- PVSM.RU - https://www.pvsm.ru -

Если вы читали мою предыдущую статью [1] на эту тему, то знаете, что у меня уже налажена весьма деликатная конфигурация для «облачного» гейминга. Состоит она из одного мощного настольного ПК, одной виртуальной машины с проброшенной GPU и клиентских машин, которые можно использовать для стриминга игр. Из соображений простоты (и низкой скорости интернета) я делал стриминг только по локальной сети.
И все же в этой конфигурации есть слабые места:
Я много читал по этой теме и выяснил, что в большинстве случаев для получения оптимального игрового опыта рекомендуют использовать связку Nvidia GPU и Moonlight. Так что, было решено найти подходящую карту.
На дворе 2021. Мир сходит с ума, и цены на видеокарты просто нереальные. В связи с этим я поумерил свой аппетит и склонился к простому варианту: GTX 1060 6G от MSI. Эта карта скромна, относительно современна для интересующих меня игр и обошлась примерно в ту же цену, сколько стоила новая 5 лет назад, то есть 260 евро. На лучшее в это коварное время рассчитывать не приходится.
Но, тем не менее, она работает! Проведенное в первом проекте [3] тестирование показало, что Nvidia отключили в драйверах намеренный выброс ошибки error code 43, что и сделало этот вариант возможным. Сама замена видеокарты проблем не вызвала. Нужно было лишь исправить ID PCI-устройств и через virt-manager изменить закрепленные за VM Windows устройства, все.
Поскольку конфигурация для стриминга с помощью Parsec уже была настроена, я решил провести небольшой тест, чтобы понять разницу между этими двумя карточками.
Предыдущая – это AMD Radeon RX570 4Gb от Sapphire. Эти две карты находятся в одном классе производительности, что весьма удачно для сравнения.
Вот некоторые результаты из двух кратких сессий тестирования в Dirt Rally. Прошу сделать на них скидку, так как проводились они без соблюдения каких-либо стандартов. Я просто выбрал одинаковые настройки графики и поиграл с запущенным окном статистики Parsec.
H.264
AMD RX 570: 10мс
NVIDIA GTX 1060: 3мс
H.265
AMD RX 570: 8мс
NVIDIA GTX 1060: 3мс
Разница в скорости кодирования просто огромна, особенно с учетом того, что время между двух кадров составляет 16.6мс при потоке 60fps. Часть задержки относится к передаче по сети и декодированию на клиенте, то есть, чем меньше время кодирования, тем лучше.
Parsec показал себя хорошо, но при этом возникли проблемы с выполнением GPU-декодирования на клиентах Linux. К тому же, в нем отсутствует клиент для iOS. И если последнюю проблему можно проигнорировать, то первую определенно нет.
Moonlight [4]является альтернативой Parsec. В нем реализован протокол Nvidia GameStream и присутствуют клиенты для большинства популярных платформ. Тестирование я проводил на клиентах Linux (Fedora 34), ноутбуке с Windows 10 (ThinkPad X230), iPhone SE 2020 и старом Google Nexus 5. Я даже попытался запустить клиента Moonlight на Raspberry Pi 1 B+, но, по всей видимости, он для него староват, что привело к ошибке при запуске.

GTA V на Google Nexus 5? Куда реальнее, чем можно подумать
Для настройки Moonlight я открыл клиента и попробовал выполнить автоматическое обнаружение по сети – к сожалению, безуспешно. Так что пришлось ввести IP-адрес VM Windows вручную. Сработало. Инициировался процесс сопряжения, который нужно было продолжить с помощью Parsec, так как необходимо ввести код на машине хоста. После из Parsec я вышел и потоковую передачу начал уже через Moonlight.
Хотя не прям сразу. Moonlight может обнаруживать установленные в систему игры, но для получения такого же опыта удаленной работы с десктопом, какой обеспечивает Parsec, нужно проделать небольшой твик [5].
В самом начале я заметил, что качество изображения на десктопе хуже, чем в случае с Parsec. Однако в ходе игры это с лихвой компенсируется. Moonlight просто работает. При этом есть очень много опций, включая изменение качества изображения путем настройки разрешения, частоты кадров и ограничения скорости сети.
Лично для меня Moonlight подходит больше, поскольку клиент Linux, упакованный как Flatpak [6], может выполнять аппаратное декодирование через видеокарту. Играется на машине с Linux просто отлично, что нельзя назвать стандартным случаем. Даже старенький контроллер Xbox One при подключении по Bluetooth через Moonlight работает прекрасно.
Вообще, при использовании Moonlight единственная проблема была связана с сетью. Это хорошо заметно в поле Network jitter встроенной статистики, которую можно вызвать комбинацией Ctrl + Alt + Shift + S. После отключения нескольких сетевых служб эта проблема исчезла.
По итогам месяца использования я внес в конфигурацию некоторые изменения. Виртуальная машина у меня была запущена постоянно, и я в любой момент мог просто переключиться на нее, чтобы поиграть. Однако в связи с твиком, который я применил для повышения игровой производительности, половина ядер процессора оказались недоступны для других задач, например для повторного индексирования проекта в IntelliJ.
В итоге я решил включать VM, только если реально соберусь поиграть, хотя пока оптимального способа делать это еще не нашел. Я даже назначал запуск/остановку VM на клавишу калькулятора, но потом GNOME начала игнорировать эту привязку и все равно открывать калькулятор, так что проработал этот прием недолго.
Более же серьезным изменением стало сохранение всех игр в пуле ZFS, находящемся в другой VM. Для этого я настроил цель ISCSI, взяв за основу это руководство [7]. При этом я использовал пакет tgt [8]. Все сработало на удивление хорошо, но цель ISCSI не хочет корректно подключаться в виртуальной машине Windows при первой загрузке, что несколько раздражает.
Позже я понял, что слабым местом являются HDD, и просто расширил SSD-хранилище. В противном случае другие процессы NAS могли нарушать игровой процесс в требовательных играх типа GTA V. Проявлялись проблемы в виде длительной загрузки и прорисовки объектов с запозданием – то есть при разъездах по карте буквально отсутствовала половина дорог и зданий.
Решение с ISCSI также дополнительно обеспечивает бэкап всех игр. Если Windows вдруг в очередной раз решит покончить с собой, и у меня не будет готов бэкап VM, то я просто ее переустановлю, не беспокоясь о скачивании и повторной установке всех игр.
В целом этой конфигурацией я очень доволен. Пользуюсь я ей не очень часто, но все равно круто иногда запустить Art of Rally или BeamNG.drive на любом из своих устройств.
В перспективе здесь, конечно, есть над чем задуматься, особенно касательно более высоких системных требований Windows 11 и современных игр. Сейчас же все работает отлично, и пока я ничего менять не собираюсь.
Автор: Дмитрий Брайт
Источник [9]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/radeon/369262
Ссылки в тексте:
[1] предыдущую статью: https://habr.com/ru/company/ruvds/blog/584910/
[2] Parsec: https://parsec.app/
[3] первом проекте: https://habr.com/ru/company/ruvds/blog/583784/
[4] Moonlight : https://moonlight-stream.org/
[5] проделать небольшой твик: https://github.com/moonlight-stream/moonlight-docs/wiki/Setup-Guide#using-moonlight-to-stream-your-entire-desktop
[6] клиент Linux, упакованный как Flatpak: https://flathub.org/apps/details/com.moonlight_stream.Moonlight
[7] это руководство: https://forum.level1techs.com/t/run-your-steam-library-from-a-nas-break-a-leg-challenge-update/107912
[8] tgt: https://packages.debian.org/bullseye/tgt
[9] Источник: https://habr.com/ru/post/585986/?utm_source=habrahabr&utm_medium=rss&utm_campaign=585986
Нажмите здесь для печати.