Как я Cyberpunk в облаке запускал: часть 1

На занятиях по артиллерийской стрельбе:

— Пушка стреляет, и снаряд летит по параболе…

— Товарищ майор, а если пушку на бок положить, то и за угол стрелять можно будет?

— Можно, но по Уставу не положено

Сразу спойлер, что комфортно поиграть у Вас вряд ли получится, но удовольствие от процесса подготовки к игре Вы возможно получите. 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 сети. На этом подготовительная работа заканчивается.

IPMI samba mount
IPMI samba mount

Путь таков

Сначала я попробовал запустить 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. Вроде как можно получить триальные версии других изданий, но мне не удалось оперативно это сделать.

Итог взаимодействия с XenCenter
Итог взаимодействия с XenCenter

Последняя надежда

Остался 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.

История загрузок с сайта vmware
История загрузок с сайта vmware

Настройка 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 сработала!

Заветные настройки vCenter
Заветные настройки vCenter

Настройка ВМ

Осталось добавить к ВМ PCI Device и выбрать профиль vGPU — про типы профилей можно прочитать в grid-vgpu-user-guide из архива, который был скачан с портала NVIDIA.

После загрузки ВМ установите vGPU драйвер из того же архива. Также не забудьте указать в панели NVIDIA адрес сервера лицензий. Лицензия при загрузке ВМ получается автоматически.

Последний сюрприз — после перезагрузки ВМ у Вас пропадёт дисплей. Надеюсь, что Вы использовали для подключения к ВМ RDP или в крайнем случае Remote Console, но не консоль в браузере. Вам поможет VNC: триальная версия сервера и клиент. Главное не отключайте остальные дисплеи до установки VNC, иначе придётся создавать вторую ВМ с тем же диском и ставить VNC через неё...

После установки VNC имеет смысл отключить в диспетчере устройств второй дисплей(именно отключить, а не настроить вывод на первый дисплей). Это тот дисплей, который был активен по умолчанию при создании ВМ. Не рекомендую отключать дисплей RDP — его потом сложно вернуть.

Что ж, на этом настройка ВМ завершена и если удача на Вашей стороне, Вы сможете запустить Cyberpunk!

Виртуальный Cyberpunk
Виртуальный Cyberpunk

Уровень сервиса

Если Вы оказались здесь, проделав все описанные шаги, то я напомню, что в спойлере что-то говорились о комфортной игре. Возможно у Вас даже возник вопрос: "Как так можно играть?"

Действительно, через VNC играть невозможно — Вы буквально видите эти полосы=(

Как ни странно через RDP играть можно — картинка передаётся на удивление приемлемо=)

Оставшиеся вопросы

Во второй части я планирую ответить на следующие ставшие актуальными вопросы:

  • Как всё-таки запустить Cyberpunk непосредственно на bare metal? Неужели нужно поставить grid драйвер?

  • Получится ли настроить Passthrough GPU на ESXi?

  • Как запустить Cyberpunk на ВМ с GPU, предоставляемой облаком? Если там Passthrough, то нужен data center драйвер или grid?

  • Какой уровень сервиса покажет триальная версия vGPU с Horizon?

  • Удастся ли настроить свой Horizon?

  • Как повлияет на уровень сервиса перенос из Dallas(~170ms) во Frankfurt(~30ms)?

  • И наконец, как быть с RTX?

Средняя зарплата в IT

120 000 ₽/мес.
Средняя зарплата по всем IT-специализациям на основании 3 865 анкет, за 1-ое пол. 2021 года Узнать свою зарплату
Реклама
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее

Комментарии 20

    0
    Не проще ли просто на Google Stadia или в России не доступно?
    Если кому интересно 2 месяца для Pro stadia.com/link/referrals?si_rid=2261358621061005807&si_rt=1, понятное дело игру нужно купить
      +3
      Проще.
      Но мы же на Хабре, а пробрасывание видеокарты в VM – задача таки не самая тривиальная, хотя и в целом описана
        +1

        каюсь грешен, пробовал проброс на ESXi 6.5 года полтора назад, то ли руки кривые, то ли гайд был не правильный по которому делал, но у меня не завелось. :( С Линуксами было проще, в плане выбрра гайдов, через месяц мучений удалось пробросить ВК в виртуалку через ProxMox (надстройка над Linux + KVM), доложу Вам что играется не менее шустро чем на нативном железе, хотя если придираться, то виртуализация часть отзывчивости съедает, но, имхо, на быстрых машинах это незаметно


        Рабочий гайд по пробросу на ESXi мне зело интересен, будем посмотреть=)

          0
          А через что стримили экран?
            0

            через кабель 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/

              +2
              Есть ещё Citrix XenApp, VMware ThinApp и другие решения RDSH

              Работу на клиенте я собираюсь осветить во второй части, в основном планирую сделать акцент на Horizon
                0
                Просмотрел ролик — FPS и задержка в верхнем левом углу это свойство игры или средства виртуализации?

                А специализированное приложение у стима — это то, которое через браузер стримит?
          0
          Google Stadia не пробовал, а вот даже купленный сервис от nvidia сразу образовал очереди после выхода игры, ну и играть на нём так себе, отошёл за едой к курьеру и тебя выкинули за неактивность, хочешь побаловаться с читами, тоже мимо, переодически лагает хотя сетка 500мб в обе стороны и даже фортнайт на максималках не выдаёт ожидаемого фпс, ну и самое главное половины игр там просто нет, так что свой сервак с игрушками уже не кажется такой плохой идеей. А с киберпанком так вообще, сначала качаем пиратку как демку, а потом платим за игру когда они уже всё пропатчили, что с облачными игровыми сервисами вообще не получиться.
            0
            понятное дело игру нужно купить

            Вот тут то и кроется основная проблема Стадии — для неё надо покупать отдельную версию игры которая после переезда сервиса сюда превратится в тыкву.
              0

              Ну да, но, мне кажется, большинство людей не играют в одну и ту же игру несколько раз. Я тоже об этом задумывался. Но если поиграю в Cyberpunk, то это только один раз.
              С другой стороны игры, вроде DOOM 2016, в которую я играю раз в год точно после выпуска, рад поддержать и купить на всех платформах.

            0

            Такой вопрос, а если подключиться не через RDP, т.к. это все же стриминг, а подцепить к проброшенной ВК на хосте монитор, то что он покажет?

              0
              Тогда будет два дисплея:
              image
              +1
              Крутая статья, спасибо за подробности.

              Приземлённый вопрос: сколько FPS удалось выжать на клиенте и с какой задержкой (хотя бы приблизительно)?

              Раз планируется цикл статей, то было бы ещё интересно почитать о технологиях того же GFN.ru и как им удаётся выдавать играбельную частоту.
                0
                Ответить на вопрос про FPS оказалось не так просто, потому что всё зависит от клиента, задержка от 150 до 170мс:(
                1. VNC — с ним всё сложно, потому что он посылает framebuffer updates
                2. RDP — есть специальный Remote Display Analyzer, но он платный и насколько я понимаю просто показывает данные из Системного монитора(выбирайте Графика RemoteFX, а не Сеть RemoteFX)
                Итого около 30 FPS, очень достойно: image
                0
                Я может быть чего-то не понимаю, но зачем нужна виртуализация для этого? Почему нельзя через Moonlight все сделать на Bare metal. Ну или через Parsec?

                Я делал и так и так, играл в 2К@60fps, но счет за трафик (делал на Амазоне), делал эту затею безсмысленной (даже для 30 Мбит/сек) с финансовой точки зрения.
                +1
                Из моего опыта запуска киберпанка в ВМ — он очень чувствителен к задержкам таймеров, выключение spectre/meltdown на хосте дает +20 фпс.
                  0
                  В Proxmox (KVM) можно пробросить (почти) все что угодно, если железо умеет vt-d (intel) или iommu (amd)
                  pve.proxmox.com/wiki/Pci_passthrough
                  www.reddit.com/r/homelab/comments/b5xpua/the_ultimate_beginners_guide_to_gpu_passthrough

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                  Самое читаемое