- PVSM.RU - https://www.pvsm.ru -
Однажды в студеную зимнюю пору… Решил я заняться покраской заборов. И перейти на темную сторону, чтобы под покровом вечной космической ночи фармить в Еве (EVE Online) и однажды захватить мир. Естественно, мои верные электронные слуги должны трудиться 24/7/365 (им сон не нужен) и мой комп, ревущий как турбина Боинга 747, для этого подходил мало. Окинув взглядом свое скромное жилище (все поработители мира начинали с малого), я обратил внимание на сервак, скромно стоящий в углу. Это было подлинное чудо в двухюнитовом корпусе китайского ноунейма. Все вентиляторы в нем были вырваны и заменены на радиаторы, а вместо сердца — каменный топор третий пень. Сервак был тих и абсолютно бесполезен для данной задачи.
Поболтавшись по форумам потомственных ботоводов в третьем поколении, я понял как вернуть утраченные счастье и веру в человечество. Надо закинуть ботов на виртуалки, благо на гипервизоре, размещенном на сервере, уже стоял ESXI 5.5. Есть один маленький нюанс. Виртуалке нужна поддержка 3D и достаточная производительность, мы ведь тут с вами в игрушки играем, а не в ворде по клавиатуре тыц-тыц. Серьезные люди, ага. А потому встает задача — прокинуть в виртуалку физическую видеокарту. А там и до всеобщего счастья рукой подать.
Это, на самом деле, очень странная статья. Начиная с того, что пишу о чем «мне Мойша напел» и, заканчивая тем, что выходит не техническая статья, как я это люблю, а, скорее, Франкенштейн по мотивам. Последнего, к тому же, периодически несет то в аналитику, то в мелкую возню с техническими деталями. Плюс статья немного затерялась во времени. Так что осторожнее, далее по тексту можно наткнуться на скелет мамонта. Но делать нечего, расчехляем ланцет. Палач, мотор!
На Хабре уже было несколько статей по пробросу видеокарты в виртуальную машину — раз [1], два [2]. Оттуда были получены примерные ориентиры и советы, куда смотреть в случае чего. Материнку из статей найти не удалось, но это меня не смутило. Требовался процессор с поддержкой Intel Virtualization Technology for Directed I/O (VT-d) / AMD I/O Virtualization (AMD-Vi) и материнская плата с поддержкой виртуализации на мосту. К сожалению, для десктопных материнских плат такие подробности чаще всего не пишут и узнать о них можно путем долгого и упорного исследования характеристики мостов. Бывают случаи, когда мост поддерживает всё, что нужно, но производитель посчитал лишним добавлять такой функционал в UEFI ради экономии денег. Была куплена материнская плата Asus M5A99X EVO R2.0 с тремя PCI-E слотами и три видеокарты к ней. Одна — NVidia GeForce 210 и две — Radeon HD6450. После вдумчивого курения манов было выяснено, что nVidia без поддержки UEFI не может переинициализироваться в виртуальной системе и превращается в тыкву до перезагрузки. Но, тем не менее, я смог завести 2 карты из 3, и на тот момент это был успех. NVidia я оставил на случай, если надо будет вручную поправить гипервизор. С ATI тоже не все было гладко. Карты не хотели инициализироваться без подключенного монитора. В итоге, был сделан ход конем — просто снял с ATI карт VGA шлейф, разобрал разъём, разрезал шлейф от LTP порта, припаял к нужным ногам через шлейф сопротивления для эмуляции монитора, вставил патченный шлейф в разъём и всё. Порт до сих так и работает, обмотанный синей изолентой. Схема распайки:
Шлейф использовался для VGA, потому что карты под низкие корпуса и третий разъём (VGA) там съёмный. У меня как раз 2U и полноразмерные карты мне не встанут. Сейчас подумываю сменить корпус и вкатать туда GeForce GTX480. Тем более, что до нашего колхоза дошли хорошие новости — на новых ядрах ATI больше не нужны сопротивления. Карта инициализируется и без них. А nVidia, по слухам, начала вкатывать UEFI-режим в обычные видеокарты, и топовые карточки пробрасываются в виртуалку. Дабы прибавить себе боли, я поменял гипервизор на Proxmox и прокинул видеокарты ATI уже там по такой инструкции [3]. Стоит отметить, что из веб-интерфейса Proxmox-пробросом управлять нельзя. Все надо делать через SSH.
В результате я водил разное количество ботов на графических видеокартах от ATI. Запускал через TeamViewer/VNC, и они сами работали в фоне до вечера. Конечно FPS проседал, но боту, который, по сути, просто смотрел нужные части экрана, анализировал картинку и в зависимости от результата кликал либо в одно либо в другое поле, было всё равно. Самый большой мой космический флот включал 1 командира подразделения и 6 космических шахтёров. Всё это работало 24/7 практически бесшумно на 2 видеокартах общей стоимостью около 5000 рублей. В результате, примерно год я не платил за игру вообще, обменивая заработанное на игровое время и даже оставался в небольшом плюсе. Конечно, были платежи за свет, но даже с учётом этого выходила неплохая экономия, учитывая что подписка на месяц на 7 моих ботов стоила около 3600 рублей. Да и света видеокарты от ATI почти не ели. Выходило около 1000 в месяц на весь гипервизор. А там ещё крутилось много всего полезного. Отдельно стоит отметить выявленные недостатки, которые мешают нормальному использованию виртуалки для игры.
Со временем, по разным причинам идея себя изжила, руда стала стоить как пыль под ногами, и я прикрыл лавочку. Но творческая мысль пошла дальше. Зачем мне мощный компьютер/ноутбук? Можно же поднять на сервере высокопроизводительную виртуалку, прокинуть туда физическую видеокарту, купить себе ноутбук, не греющийся, как атомный котел и которым можно разрубить тот самый троллейбус из буханки хлеба. Потом поднять на нем линукс и спокойно играть в любые игры с любыми требованиями, лишь бы железо на серваке выдержало. Если игра чувствительна ко времени отклика, то к нашим услугам локальная сеть. А всякие редакторы, офисы и прочее доступны вообще из любой дыры на планете, где есть хоть сколько-нибудь широкополосный интернет. Но, как оказалось, не я один такой умелый и находчивый, и вообще таких сервисов вагон и маленькая тележка, но… Они все давали доступ только к играм, выбор самих игр был предельно мал, картинкой можно было стирать промасленную робу (мыло, оно и есть мыло). Конечно, у таких сервисов были и плюсы — например, можно поиграть с компа в консольные новинки, но доступа к рабочему столу почти никто не предоставлял. На просторах интернета был найден единственный сервис подобного рода — onPlay. Но он размещался в Америке, обладал слабой картинкой и был на грани смерти. Поэтому, собственно, и продавал доступ к рабочему столу вместо подписки на игры. Кстати, пару лет назад он умер. Помянем. XD
Продолжая разрабатывать эту идею, я с сожалением обнаружил, что, если аппаратную часть под мою задумку может собрать любой продвинутый школьник, то программная представлена скудно и состоит всего из нескольких решений. А именно:
А теперь пойдем в своих измышлениях еще дальше и поставим вопрос шире. А что, если 1 мощный компьютер и несколько сотрудников одновременно? Сама идея данного метода не нова. Многие компании делают софт разной стоимости, так или иначе реализующий данную возможность. Хотя на самом деле правильно подобранное железо и немного времени IT-шника позволят решить с помощью виртуализации такую задачу абсолютно бесплатно. Например, выкинуть в окно все компы, предварительно вынув из них видеокарты и выброситься вслед за ними, купить 1 мощный компьютер с поддержкой PassThrought и несколькими дешёвыми видеокартами. Для экономии, давайте, возьмём ProxMox (KVM) в качестве гипервизора. Создадим количество виртуальных машин, равное числу видеокарт. Подключим к каждой виртуальной машине по видеокарте, а так же клавиатуре и мыши из USB-разъёмов. Включим их. Рабочие места готовы. Распределение процессорных ресурсов позволяет пользователям работать одновременно на одном компьютере за разными мониторами, с разными операционными системами, клавиатурами и мышами. В случае использования USB аудио-гарнитур, к виртуальной машине подключается и звук. Такие машины гораздо легче бекапить, в случае поломки компьютера ее можно просто мигрировать за любой свободный, и пользователь сможет продолжать работать, как ни в чём не бывало. Или даже переместить все хранилища пользовательских виртуалок на отдельный iSCSI диск и вообще абстрагироваться от аппаратной части при работе с компьютерами пользователей. Легким небрежным движением администраторской руки качаем диск C пользователя, ставим на него необходимое ПО, настраиваем и заливаем обратно. Или клонируем диск из шаблона и новое рабочее место готово, осталось только имя машины сменить. Таким образом могут работать и пользователи с высокими требованиями к видео системе — достаточно поставить в физическую машину видеокарту, удовлетворяющую требованиям пользователя. В данном методе, конечно, есть и ложка дёгтя. В случае поломки одной физической машины теряются рабочие места сразу нескольких сотрудников. Так же такие машины лучше не выключать, потому что включить их можно только через веб-панель гипервизора.
А что, если перенести компьютеры поближе к IT-шникам, например, в датацентр, а в офисе оставить только мониторы? Это вполне возможно. Есть несколько решений для реализации подобной задумки. В частности, VMware Horizon, Xen Desktop или Microsoft RDP. Они позволяют запускать отдельные приложения или целые операционные системы в вашем браузере, а их обслуживание становиться проще в силу того, что IT-отделу нужно будет обслуживать всего несколько заготовок рабочих машин, а не весь пользовательский машинный парк. Все эти сервера позволяют использовать графическое ускорение на основе промышленных 3D ускорителей nVidia. В офисе же можно поставить тонкие клиенты или мониторы с поддержкой протокола PCoIP. Это значит, что в вашей конторе могут в принципе отсутствовать системные блоки. Только роутер и мониторы с клавиатурами. Также Teradici выпускает платы для превращения обычной рабочей станции в удалённый сервер PCoIP или просто для ускорения обработки протокола при установке в сервер XEN или VMware. Еще вместо аппаратной платы можно воспользоваться программным комплексом.
Вот так, начав с простой, незатейливой, я бы даже сказал, шкурной мысли и реализации, мы пришли к новому уровню терминального доступа, при котором сеть выступает не в роли пассивного передатчика картинки, а как полноценная шина обмена с нашей периферией. У пользователей появляется гораздо больше возможностей по использованию такого привычного для него удаленного рабочего стола.
Автор: Владимир Фисейский
Источник [10]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/virtualizatsiya/262895
Ссылки в тексте:
[1] раз: https://habrahabr.ru/post/149416/
[2] два: https://habrahabr.ru/post/137327/
[3] инструкции: https://pve.proxmox.com/wiki/Pci_passthrough
[4] официальный сайт: http://www.teradici.com/
[5] хабр: https://habrahabr.ru/post/133033/
[6] демонстрация: https://www.youtube.com/watch?v=sGsYI5G-1Z8
[7] GRIDv1, GRIDv2: http://www.nvidia.ru/grid/
[8] официальный сайт: http://gaminganywhere.org/
[9] официальный сайт: https://shield.nvidia.ru/gamestream
[10] Источник: https://habrahabr.ru/post/330440/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.