На занятиях по артиллерийской стрельбе:
— Пушка стреляет, и снаряд летит по параболе…
— Товарищ майор, а если пушку на бок положить, то и за угол стрелять можно будет?
— Можно, но по Уставу не положено
Сразу спойлер, что комфортно поиграть у Вас вряд ли получится, но удовольствие от процесса подготовки к игре Вы возможно получите. 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?