На занятиях по артиллерийской стрельбе:
— Пушка стреляет, и снаряд летит по параболе…
— Товарищ майор, а если пушку на бок положить, то и за угол стрелять можно будет?
— Можно, но по Уставу не положено
Сразу спойлер, что комфортно поиграть у Вас вряд ли получится, но удовольствие от процесса подготовки к игре Вы возможно получите. Sit venia verbo!
Происхождение идеи
В конце 2015 года я решил запустить Crysis на сервере и передавать экран на свой компьютер.
Для решения задачи был выбран армейский метод: в двухъюнитовый storage была вставлена GeForce GTX 470(в head и worker она не проходила по профилю) и с помощью кустарного кабеля соединена с блоком питания(медь и коннекторы покупались отдельно от изоленты). Затем был поставлен ESXi 6, создана ВМ с Windows и сделана попытка через Passthrough подключить GPU. Попытка провалилась, но идея осталась!
Также примерно в то же время был замысел использовать серверные видеокарты Tesla с архитектурой Fermi как GRID — разницу между compute и graphics режимами я тогда понимал весьма смутно и по всей видимости не знал, что GRID поддерживается начиная с Kepler. Тут важно, что ещё тогда я что-то слышал про vGPU...
Новое начало
С тех пор прошло около пяти лет, наступило время Четвёртого переноса, но Cyberpunk вышел. Очереди на сервисе облачного гейминга NVIDIA NOW GFN были длиннее очередей за новым айфоном. По рассказам очевидцев, ожидание занимало часы, даже появилась очередь из тех, кто заплатил, чтобы не стоять в очереди.
Но звёзды освещали путь, поскольку тогда же я получил для стартапа MSU HUB грант на облачные вычисления в IBM Cloud по программе поддержки стартапов Startup with IBM. Основной целью гранта является перенос сервисов экосистемы с внешних ресурсов на внутренние, но в облаке была возможность арендовать bare metal server with GPU и я не смог удержаться. Хватило на самый базовый сервер с T4 видеокартой, но этого оказалось достаточно.
Несколько слов о настройке сервера: через поддержку нужно получить root'овые права на IPMI, а также попросить настроить порядок загрузки в BIOS, чтобы загрузка с ISO была в приоритете. После этого рядом с подготовленным железным сервером нужно развернуть виртуальный и настроить доступ к samba директории — это нужно для более быстрой загрузки с ISO, поскольку передавать образ с локальной машины по VPN мучительно медленно. Важный момент: в качестве адреса загрузки в IPMI нужно указывать адрес в private сети. На этом подготовительная работа заканчивается.
Путь таков
Сначала я попробовал запустить Cyberpunk на Windows 10, поставленной непосредственно на сервер. У NVIDIA есть два разных драйвера для серверных GPU: драйвер Data Center / Tesla с публичной части сайта и vGPU драйвер с Application Hub — я установил первый драйвер, игра не заработала, рекомендация использовать польский язык не помогла:(
Вариантов без виртуализации не осталось и я попытался использовать встроенный в Windows 10 Hyper-V — он заработал, но я так и не понял, есть ли в нём возможность работы с GPU. Не исключаю, что поддержка есть в версии Hyper-V для Windows Server, но мне показалось непрактичным запускать Windows из-под Windows:)
Поэтому я перешёл к Citrix XenServer 8.2.0 — бесплатно удалось получить только Express Edition, в котором нет поддержки vGPU. Вроде как можно получить триальные версии других изданий, но мне не удалось оперативно это сделать.
Последняя надежда
Остался ESXi — я установил бесплатную версию VMware vSphere Hypervisor 7.0 с ESXi 7.0b(7.0.0).
На нём была развернута ВМ с Windows 10(удобно переместить ISO в хранилище гипервизора и затем подключать к ВМ оттуда) и с неё установлен vCenter Server(отличная инструкция). Да, если при открытии web-клиента vCenter Вы увидите no healthy upstream, то подождите ещё немного...
Для доступа к ВМ из интернета я предварительно добавил в облаке к основной сети физического сервера secondary subnet portable IP. Мне повезло, что из-за особенностей её реализации не возникло трудностей с FQDN при установке vCenter.
Настройка vGPU
Сначала необходимо получить триальную лицензию. Затем, следуя quick start quide, нужно пройти два этапа: организационный и содержательный.
Организационный этап состоит из следующих шагов:
Зарегистрироваться на портале, используя данные из полученного письма(мне письмо пришло почти сразу после заполнения формы)
Скачать необходимый софт(NVIDIA vGPU for vSphere 7.0 в моём случае)
Скачать сервер лицензий(License Manager for Windows в моём случае)
Скачать и установить Java(рекомендую OpenJDK JRE, также уберите последний слэш в JAVA_HOME, иначе сервер лицензий не поставится)
Установить и настроить сервер лицензий(я ставил прямо на ВМ с Windows 10, главное указать нужный MAC-адрес — адрес интерфейса ВМ)
Затем начинается содержательный этап, посвящённый непосредственно настройке vGPU:
На ESXi устанавливать ничего не надо, nvidia-smi работает из коробки
ECC лучше отключить(не забудьте проверить, что он отключился, используя nvidia-smi -q)
В Configure в разделе Graphics в подразделе Host Graphics установите Default graphics type в Shared Direct(вот почему было нужно устанавливать vCenter, в дефолтном web-клиенте ESXi таких настроек нет, а GUI vSphere Client перестал поддерживаться)
В Configure в разделе Graphics в подразделе Graphics Devices установите Active Type в Shared Direct
С последним пунктом возникла проблема, поскольку xorg не хотел корректно перезагружаться — в итоге я обновил ESXi до 7.0U1c(7.0.1) используя триальную версию VMware vSphere 7.0 Update 1c. Повезло, что в ESXi есть опция upgrade & preserve, позволяющая сохранить ВМ в хранилище.
После обновления ESXi установка Active Type в Shared Direct сработала!
Настройка ВМ
Осталось добавить к ВМ PCI Device и выбрать профиль vGPU — про типы профилей можно прочитать в grid-vgpu-user-guide из архива, который был скачен с портала NVIDIA.
После загрузки ВМ установите vGPU драйвер из того же архива. Также не забудьте указать в панели NVIDIA адрес сервера лицензий. Лицензия при загрузке ВМ получается автоматически.
Последний сюрприз — после перезагрузки ВМ у Вас пропадёт дисплей. Надеюсь, что Вы использовали для подключения к ВМ RDP или в крайнем случае Remote Console, но не консоль в браузере. Вам поможет VNC: триальная версия сервера и клиент. Главное не отключайте остальные дисплеи до установки VNC, иначе придётся создавать вторую ВМ с тем же диском и ставить VNC через неё...
После установки VNC имеет смысл отключить в диспетчере устройств второй дисплей(именно отключить, а не настроить вывод на первый дисплей). Это тот дисплей, который был активен по умолчанию при создании ВМ. Не рекомендую отключать дисплей RDP — его потом сложно вернуть.
Что ж, на этом настройка ВМ завершена и если удача на Вашей стороне, Вы сможете запустить Cyberpunk!
Уровень сервиса
Если Вы оказались здесь, проделав все описанные шаги, то я напомню, что в спойлере что-то говорились о комфортной игре. Возможно у Вас даже возник вопрос: "Как так можно играть?"
Действительно, через VNC играть невозможно — Вы буквально видите эти полосы=(
Как ни странно через RDP играть можно — картинка передаётся на удивление приемлемо=)
Оставшиеся вопросы
Во второй части я планирую ответить на следующие ставшие актуальными вопросы:
Как всё-таки запустить Cyberpunk непосредственно на bare metal? Неужели нужно поставить grid драйвер?
Получится ли настроить Passthrough GPU на ESXi?
Как запустить Cyberpunk на ВМ с GPU, предоставляемой облаком? Если там Passthrough, то нужен data center драйвер или grid?
Какой уровень сервиса покажет триальная версия vGPU с Horizon?
Удастся ли настроить свой Horizon?
Как повлияет на уровень сервиса перенос из Dallas(~170ms) во Frankfurt(~30ms)?
И наконец, как быть с RTX?
outcoldman
Не проще ли просто на Google Stadia или в России не доступно?
Если кому интересно 2 месяца для Pro stadia.com/link/referrals?si_rid=2261358621061005807&si_rt=1, понятное дело игру нужно купить
NetBUG
Проще.
Но мы же на Хабре, а пробрасывание видеокарты в VM – задача таки не самая тривиальная, хотя и в целом описана
LuchS-lynx
каюсь грешен, пробовал проброс на ESXi 6.5 года полтора назад, то ли руки кривые, то ли гайд был не правильный по которому делал, но у меня не завелось. :( С Линуксами было проще, в плане выбрра гайдов, через месяц мучений удалось пробросить ВК в виртуалку через ProxMox (надстройка над Linux + KVM), доложу Вам что играется не менее шустро чем на нативном железе, хотя если придираться, то виртуализация часть отзывчивости съедает, но, имхо, на быстрых машинах это незаметно
Рабочий гайд по пробросу на ESXi мне зело интересен, будем посмотреть=)
brocmc Автор
А через что стримили экран?
LuchS-lynx
через кабель DVI/Display port =)
если серьезно, то на тот момент, да и сейчас, с RDP было все уныло, SPICE я решил не тестить, т.к. работаю хоть и на виртуалке, но сидя за хостом
https://pve.proxmox.com/wiki/SPICE
На сколько могу судить лучше всех работает специализированное приложение у стима, могу ошибаться, т.к. давно не копал в эту сторону, помимо GeForce Now, но т.к. мне не только игрушки, то остался с обычным монитором.
На видио можно посмотреть как работает + простенькие тесты жесткого (снимал на тапок, да и вышло нудновато, но я делал как иллюстрацию к статье, а не видеогайд)
https://www.youtube.com/watch?v=wjlmWHJiEug
статья
https://m.habr.com/ru/post/437598/
brocmc Автор
Есть ещё Citrix XenApp, VMware ThinApp и другие решения RDSH
Работу на клиенте я собираюсь осветить во второй части, в основном планирую сделать акцент на Horizon
brocmc Автор
Просмотрел ролик — FPS и задержка в верхнем левом углу это свойство игры или средства виртуализации?
А специализированное приложение у стима — это то, которое через браузер стримит?
jetcar
Google Stadia не пробовал, а вот даже купленный сервис от nvidia сразу образовал очереди после выхода игры, ну и играть на нём так себе, отошёл за едой к курьеру и тебя выкинули за неактивность, хочешь побаловаться с читами, тоже мимо, переодически лагает хотя сетка 500мб в обе стороны и даже фортнайт на максималках не выдаёт ожидаемого фпс, ну и самое главное половины игр там просто нет, так что свой сервак с игрушками уже не кажется такой плохой идеей. А с киберпанком так вообще, сначала качаем пиратку как демку, а потом платим за игру когда они уже всё пропатчили, что с облачными игровыми сервисами вообще не получиться.
SandroSmith
Вот тут то и кроется основная проблема Стадии — для неё надо покупать отдельную версию игры которая после переезда сервиса сюда превратится в тыкву.
outcoldman
Ну да, но, мне кажется, большинство людей не играют в одну и ту же игру несколько раз. Я тоже об этом задумывался. Но если поиграю в Cyberpunk, то это только один раз.
С другой стороны игры, вроде DOOM 2016, в которую я играю раз в год точно после выпуска, рад поддержать и купить на всех платформах.