- PVSM.RU - https://www.pvsm.ru -
После прочтения этой статьи [1], моя девушка предложила попробовать вставить в мой системник вторую видеокарту и получить две машины на одном железе. Мы проделали длинный совместный путь проб и ошибок, столкнулись с интересными проблемами, решение которых я хотел бы описать.
Изначально для эксперимента была выбрана платформа виртуализации XPC 1.5 beta (Xen Cloud Platform), в основе которой лежит гипервизор Xen. Эта платформа полностью бесплатна, кроме того, установка и запуск в работу занимает считанные минуты. В ходе работы выяснилось, что на виртуалке под XCP невозможно запустить Skype, он сразу же завершается с ошибкой. Проблема описана здесь [3] и здесь [4]. Для ее исправления требуется добавить одну строчку в исходники и пересобрать Xen, на котором основан XPC. Поэтому я перешел на бесплатную редакцию Citrix Xen Server 6.0.2 в котором данная проблема уже исправлена.
Еще одна опасность подстерегала при установке драйверов видеокарты. Дело в том, что Catalyst Control Center вызывает BSOD на гостевой системе (проверено как на XCP, так и на Xen Server). Поэтому придется ставить драйвер через диспетчер задач, родной инсталлятор тоже может вызвать BSOD при проверке видеокарты.
В итоге гостевая система получила в свое распоряжения полноценную HD7770 и прошла все тесты. После полной настройки гостевой ОС я создал связанную копию (это позволило изрядно сэкономить место на SSD) и пробросил туда вторую видеокарту.
К сожалению, отдельные USB порты XCP и Xen Server пробрасывать не умеют, поэтому я пробросил один контроллер USB в одну машину (все задние порты), второй в другую (все порты выведенные на корпус). Встроенные контроллеры USB висят на PCI и поэтому пробрасываются так же как и видеокарта.
Справедливости ради стоит отметить, что проброс отдельных USB есть в Xen, но управлять им на мой взгляд сложнее (нужен определенный опыт работы в линуксе)
Все это позволило полноценно использовать один системный блок для работы и игр двум людям и параллельно запускать на нем же дополнительные виртуальные машины, если требуется. Падения производительности видеокарт или процессора замечена не было. Перебоев в работе, зависаний, каких либо проблем, кроме описаных выше, не обнаружено!
Есть бесплатный вариант с ограниченным функционалом. Он нам не подходит, так как пока не имеет поддержки проброса устройств (passthrough). У него однако есть очень заманчивая технология RemoteFX, которая позволяет получать 3d ускорение через RDP сеанс. Насколько я понял, некоторые современные игры работают с ним, некоторые нет. Кроме того, скорее всего, будут определенные затраты на эмуляцию, что снизит производительность. Эту интересную технологию я обязательно попробую и напишу отдельную статью.
Пожалуй самый популярный и мощный. Во время тестирования он был фаворитом, т.к. почти во всем, на мой взгляд, превосходит XenServer. Во первых позволяет при создании виртуальных машин указывать тонкие настройки железа, что несомненно полезно при подготовке образов для заливки на реальное железо. XenServer же напротив, имеет лишь заранее подготовленные шаблоны и все делает на свое усмотрение. Во вторых имеет сразу три вида балансировки памяти, а так же позволяет “отдать” гостевой машине строго определенное количество процессорного времени. Есть бесплатная редакция с ограничением памяти в 32 ГиБ. Проброс (passthrough) PCI устройств здесь делается проще всего: отмечаем галочками нужные устройства и добавляем их в гостевую машину. Однако, успешно пробрасываются только некоторые видеокарты. Успех не зависит от производителя, пробрасываются как AMD, так и nVidia, но только некоторые. Мне не повезло, Radeon 7770 не удалось передать виртуальной машине. Во время установки драйверов получаем BSOD.
Во время проброса я столкнулся с очень интересным багом, который может поставить в тупик. Дело в том, что если гостевой машине выделено больше 2 гб памяти, то после проброса видеокарты машина не стартует! Решение проблемы я нашел здесь [5].
У этого гипервизора есть еще одна проблема: Нельзя просто взять и поставить его на обычное железо. Только на сертифицированное! На начальном этапе установке он не нашел подходящей сетевой карты и отказался продолжать. Довольно странно, т.к. встроенный в мою мат. плату сетевой адаптер — это Intel 82579, не самый плохой вариант, согласитесь. Далее я нашел в закромах D-link DGE 528T, но и эту плату он не поддерживает. Немножко погуглив, нашел следующее решение [6]. Пропатчив образ, нам все же удалось установить ESXi 5.1.
На его основе сделано много коммерческих продуктов, например, очень популярный сейчас Citrix XenServer, или мало кому известный Oracle VM. Я вижу три варианта использования этого гипервизора:
малоизученный мною гипервизор, про него почти ничего сказать не могу. Вроде бы он умеет пробрасывать PCI устройства, в том числе видеокарты. Насколько я понял, он не является отдельной платформой, а ставится на линукс, после чего настраивается. Я не любитель ковыряния в командной строке и не имею достаточного опыта работы в линуксе, поэтому решил рассматривать его в последнюю очередь.
Я объединил два разных продукты, т.к один фактически является клоном другого, расхождений в настройке мало (я буду их отмечать).
cd /opt/xensource/bin
/etc/init.d/xapi stop
cp -vp xapi xapi.original
sed -i 's/1.4.90/6.0.99/g' xapi
/etc/init.d/xapi start
После этого в Xen Center появятся вкладки, позволяющие включать балансировку памяти, а так же выполнять проброс видеокарты в гостевые машины.
lspc
и видим список pci устройств с идентификаторами. Запоминаем коды нужных нам устройств. Например, видеокарта в первом pci-e слоте бедет иметь идентификатор 01:00.0, а встроенная в нее звуковая карта 01:00.1.
xe vm-lis
и видим список виртуальных машин. Запоминаем uuid идентификаторы нужных нам машин. Например, d103a91d-5c38-844f-14d5-64b3c495eb08.
xe vm-param-set other-config:pci=0/0000:01:00.0,0/0000:01:00.1 uuid=d103a91d-5c38-844f-14d5-64b3c495eb08
заменяя значения в примере на свои собственные. Через запятую пречисляем все pci устройства, который хотим пробросить.
Общие сведения: Wiki (Wiki [9])
Xen: Проброс видеокарты в Xen, из-под Ubuntu (Хабр [10])
Проброс видеокарты в виртуальную машину (Хабр)
Xen: XenVGAPassthrough (legacy) (Wiki.xen.org [11])
Xen: Xen VGA Passthrough (new)(Wiki.xen.org [12])
ХenServer и XCP: XenServer 5.6 Multi-GPU Passthrough for XenDesktop HDX 3D Pro Graphics (support.citrix.com [13])
ХenServer и XCP: PCI passthrough for paravirtualized guests on Citrix XenServer without an IOMMU (ogris.de/howtos [14])
XCP: Исправление бага с XenCenter для XCP(gossamer-threads.com [15])
Напоследок добавлю, что во время написания данной статьи из-под одной машины моя девушка сидела рядом, играя в Skyrim на другой без всяких лагов и тормозов на высоких (частично ультра) настройках графики. Под столом стоит один системник, который экономит место и деньги, на столе два монитора.
Автор: gluko
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/passthrough/15287
Ссылки в тексте:
[1] этой статьи: http://habrahabr.ru/post/137327/
[2] Gigabyte GA-Q67M-D2H-B3: http://www.gigabyte.ru/products/page/mb/ga-q67m-d2h-b3rev_10/
[3] здесь: https://jira.skype.com/browse/SCW-3323
[4] здесь: http://lists.xen.org/archives/html/xen-devel/2012-01/msg00248.html
[5] здесь: http://communities.vmware.com/message/2061243#2061243
[6] решение: http://www.ivobeerens.nl/2011/12/13/vmware-esxi-5-whitebox-nic-support/
[7] XCP : http://www.xen.org/products/downloads.html
[8] XenServer: http://www.citrix.com/English/ps2/products/product.asp?contentID=683148
[9] Wiki: http://ru.wikipedia.org/wiki/Xen
[10] Хабр: http://habrahabr.ru/post/149416/
[11] Wiki.xen.org: http://wiki.xen.org/xenwiki/XenVGAPassthrough
[12] Wiki.xen.org: http://wiki.xen.org/wiki/Xen_VGA_Passthrough
[13] support.citrix.com: http://support.citrix.com/article/CTX125574
[14] ogris.de/howtos: http://ogris.de/howtos/xen-pci-passthrough.html
[15] gossamer-threads.com: http://www.gossamer-threads.com/lists/xen/api/234573
Нажмите здесь для печати.