LINUX.ORG.RU

Проброс видеокарты в виртуалку с виндой (хвастаюсь)

 , ,


6

5

В общем я собрал с нуля новый комп и крайне успешно пробросил видеокарту в вирт. машину с виндой чтобы играть в игрушки. В итоге все получилось даже немного лучше чем я ожидал.

По ходу дела столкнулся с множеством трудностей, но готов поделиться своими свежеприобретенными знаниями с ЛОРом. Так что задавайте ваши ответы, если кому интересно, конечно.

Система:

- ASRock X470 Taichi Ultimate

- AMD Ryzen 2700X

- P. GPU: Radeon RX580

- S. GPU: Radeon 2400 HD

- RAM 32GB

- Arch Linux

Детали виртуализации: - QEMU/KVM.

- P. GPU отходит вирт. машине с Windows 10.

- Нашел два порта USB 3.0 на отдельном контроллере и в отдельной IOMMU группе, отдал виртуалке.

- Пробросить SATA контроллер не получилось, неудачно совпали группы, использую raw партицию + SSD для кэша.

- Звук по HDMI.

- Hugepages (1Gb), 8 штук для вирт. машины.

- 8 ядер отходит виртуалке, topoext включен в qemu.

- Для процессора, видеокарты и звука настроил прерывания MSI.

- На хосте использую vfio-pci.

- TianoCore UEFI BIOS.

В общем на все про все ушло 2 недели безнапряжных занятий после работы. Результат превзошел все ожидания, хотя некоторые ситуации казались что уже безвыходные, например, при перезагрузке вирт. машины намертво зависал хост.



Последнее исправление: alex07 (всего исправлений: 1)
Ответ на: комментарий от Deleted

А вот кипятильники через те же 5 лет надо будет чистить и менять им СО чтобы не перегревалось.

Любой механизм требует технического обслуживания. Термопаста банально высыхает и теряет свои свойства через несколько лет. Это не говоря о том что скапливается пыль внутри, даже, как в моем случае, при использовании HEPA фильтров и проч.

юзай свой кипятильник дальше, если он тебя устраивает.

Ну так ты покажи мне граф. карту с такой же производительностью и с низкой теплоотдачей. Я с удовольствием приму к рассмотрению, тем более что мне сейчас нужна еще одна карта для десктопа.

alex07
() автор топика
Ответ на: комментарий от alex07

Термопаста банально высыхает и теряет свои свойства через несколько лет.

И опять же, у кипятильников этот процесс заметно ускорен. Большее рассеивание тепла из-за постоянных нагрузок типа игр или майнинга.

Ну так ты покажи мне граф. карту с такой же производительностью и с низкой теплоотдачей.

Нет таких. Нынче производительностью никого не удивишь, а вот СО у кипятильников бывает разной.

Когда я брал свою 1050Ti, не помню скольки гиговая в моей стране, да и даже на алиэкспрессе RX 580 стоила 30 тыр. Я было облизывался на нее, но денег не хватало. А потом узнал, что она греется также как моя XT 7870, поэтому вообще отказался ее брать. Вместо этого взял 1050Ti, которая по производительности равна XT 7870, но имеет заметно меньший TDP. Играю я мало, т.к. годных игр почти нет (Кроме последней части Ведьмака и пары старых игр). Больше времени работаю в Blender.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)

В общем говоря по теме: что то я перемудрил с оптимизациями, в итоге драйвер граф. карты перестал нормально работать. А игры вылетали после 2-3 секунд работы.

Переустановил все заново с параметрами по умолчанию. Настроил MSIInterrupt, иначе нет звука через HDMI.

Все вроде как починилось, но образовались две проблемы:

1. После старта вирт. машины появляется курсор и минуты 3-4 просто ничего не происходит. Затем начинается загрузка.

2. Если вирт. машину выключить, то надо перезапускать весь хост, иначе она больше уже не запустится. Это совершенно точно не AMD reset bug, ибо машина выключается, а не остается подвешеной в Shutting down...

Есть идеи у кого нибудь?

alex07
() автор топика
Ответ на: комментарий от Deleted

В новом шлаке типа богомерзкой японщины «Sekiro бла бла бла» 30 фпс, а прочее старье от 2015 года — 40-45 фпс и это все на FHD и высокие настроечки, я никогда на низких не играю.

Но с учетом жопоруких разрабов, клепающих меши и текстуры для своих игр словно заправские глиномесы (безо всякой экономии видеопамяти), будущий шлак потребует кипятильник с видеопаммятью от 16 ГБ и выше, особенно в свете новомодных 4/8k

Deleted
()
Ответ на: комментарий от Deleted

будущий шлак потребует кипятильник с видеопаммятью от 16 ГБ и выше, особенно в свете новомодных 4/8k

По сути это общая тенденция. Что на телефонах, что в виндоусе, что в играх... От этого весьма грустно.

Это одна из причин по которым я и использую Линукс. Он не подвержен этой суете. Даже с учетом разработки на джаве 8Гб и старенького проца i5-3xxxU хватает за глаза вот уже много лет.

Возвращаясь к играм, шлак и есть. Игр с интересным сюжетом выходит одна в несколько лет.

alex07
() автор топика
Последнее исправление: alex07 (всего исправлений: 1)
Ответ на: комментарий от alex07

По сути это общая тенденция. Что на телефонах, что в виндоусе, что в играх... От этого весьма грустно.

Главное, не поддаваться этому, а брать нужное тогда, когда это нужно.

Даже с учетом разработки на джаве 8Гб

Что-то разрабатываешь?

Deleted
()
Ответ на: комментарий от King_Carlo

Давай попробуем.

Спасибо, хотел уже начать искать твои личные контакты.

В общем я переустановил винду.

Вот тут обозначил проблемы с которыми столкнулся: Проброс видеокарты в виртуалку с виндой (хвастаюсь) (комментарий)

Но теперь появился еще один прикол, винда работает ок, но при запуске игры (Rage 2) намертво вылетает, хотя еще пару дней я нормально играл.

Что именно поменялось, я не знаю.

Вот мой virsh dumpxml: https://pastebin.com/4kPxFzCi

Насколько я понимаю у нас с тобой карты идентичные, поэтому твой конфиг можно напрямую мне поставить.

Я начинаю реально задумываться чтобы поменять BIOS с Q35 на i440.

alex07
() автор топика
Ответ на: комментарий от alex07

В общем, судя по всему это не Qemu и проброс глючит, а драйверы граф. карты.

А именно Wattman и динамическое изменение частоты.

Но это не точно.

alex07
() автор топика
Ответ на: комментарий от alex07

Он, конечно, неадекват известный, но ты в этом треде совсем с дуба рухнул. Полиции Испании на тебя нет, экономист диванный.

t184256 ★★★★★
()

Так что задавайте ваши ответы, если кому интересно, конечно.

То есть вопрос сразу пропустить, сразу ответ? ОК: «Да не, ничего в этом нового и интересного, просто жж (-7)».

t184256 ★★★★★
()
Ответ на: комментарий от alex07

Ну так и продолжай. Или ты думаешь что программисты разработавшие игру или ее продавцы работают забесплатно или за процент от продаж? Наивный ты.

Это тут причём, ты же сам сказал, что программисты уже гонорар получили, инженеры, собиравшие видюшку, тоже, игру ты стыришь, а видюху нет, объясни разницу?

Тебе конкретные вопросы задают, чтоб ты объяснил свою позицию, а не размышлял, что вопросы из-за наивности задают.

anonymous
()
Ответ на: комментарий от t184256

Он, конечно, неадекват известный, но ты в этом треде совсем с дуба рухнул. Полиции Испании на тебя нет, экономист диванный.

Где же я с дуба рухнул? Меня тут поливают говном, приписывают мне какой то криминал и т.д. Говорю же, в Испании можно на совершенно законных основаниях качать пиратские торренты, привожу ссылки на статейки. Мне же вбивают о жизни по понятиям, международные трибуналы, взывают к какой то совести и обвиняют в том что из за меня дизайнеры игр голодают.

Все без толку... вы вот меня еще хотите в полицию сдать.

alex07
() автор топика
Ответ на: комментарий от t184256

То есть вопрос сразу пропустить, сразу ответ?

Это просто такое выражение смешное, про «задавайте ваши ответы».

alex07
() автор топика
Ответ на: комментарий от anonymous

игру ты стыришь, а видюху нет, объясни разницу?

Ну я еще раз повторяю. В стране где я живу, ты можешь на совершенно легальных основаниях скачать игру с торрентов, установить на свой компьютер и играть. Никаких ограничений и преследований в связи с этим нет.

Хорошо ли это, плохо ли это, наивно или нет. Я не знаю. Но это факт и это закон. Так что перестаньте называть меня вором, по крайней мере в юридической плоскости это не так.

Если ты украдешь видеокарту, то опять же, по законам страны, ты совершаешь преступление.

В чем разница между видеокартой и игрой? Я не знаю. Не я эти законы придумывал, я просто пользуюсь этим правом.

Теперь о моральной стороне вопроса. Я считаю, что люди которые делают игру непосредственно они итак получают свой гонорар. А если Гейб Ньюман недополучит с меня 60 евро, то ничего страшного не случится, он и без них крайне богат. Вот Линус Торвальдс как то бесплатно трудится на благо всех, и не бедствует особо. Как то вот такая позиция.

alex07
() автор топика
Ответ на: комментарий от King_Carlo

Давай попробуем.

Я с каждым разом все больше убеждаюсь что дело в драйвере, а точнее в приблуде под названием Wattman.

Дело в том что игра запускается, но при смене кат-сцен, машина намертво вешается.

alex07
() автор топика
Ответ на: комментарий от anonymous

Если бы видюху можно было бы скачать с торрента, то лично я бы это сделал. А разница в том, что у конкретного экземпляра видеокарты есть реальная себестоимость и достаточно крупная(не считая труда инженеров и подобных), а у «игры»(коробочной) низкая – произвести диск много денег не надо, а сам труд разработчиков игры невозможно оценить, то есть издатель, как минимум в цифре может поставить любую цену, хоть цент, если он уверен что количество купивших отобьёт разработку, производитель видюхи так сделать не может, в результате стоимость бинарников с ресурсами игры субъективна в каком-то роде, а видюхи реальна , осязаема и объективна, отсюда и разница, человек чувствует эту разницу и качает с торрента и не чувствует близость этого деяния к краже, вот из-за этих вышеописанных аспектов как по мне.

abbcto
()
Ответ на: комментарий от abbcto

человек чувствует эту разницу и качает с торрента и не чувствует близость этого деяния к краже.

Самое забавное, что эту разницу чувствуют все и законодатели в том числе.

Я не совсем понимаю, откуда на этом форуме берутся неадекваты которые приравнивают скачаную игру к краже и при этом еще рассказывают какие то басни про международное законодательство. О котором, кстати говоря, имеют крайне поверхностное представление.

alex07
() автор топика
Ответ на: комментарий от King_Carlo

В общем все еще сильнее усложнилось.

Я запускаю FurMark с запущенным Ватманом, все работает, ничего не крашется, скорость GPU ездит туда сюда.

Я прямо уже даже не знаю куда и смотреть то.

Может диск сыпется?

alex07
() автор топика
Ответ на: комментарий от King_Carlo

Я в глухой деревне, выйду на связь во вторник.

Не страшно, я кажется понял в чем причина. Я файл свопа отключал на виндоусе виртуальном сразу после установки. По какой то причине, после включения свопа все чудесным образом заработало.

Но проблема с ребутом осталась

alex07
() автор топика
Ответ на: комментарий от alex07

С ребутом ВМ, у меня, с конкретно этой синей sapphir RX580 nitro+se, та же проблема, второй раз не стартует никогда, но хост не зависает, его можно штатно перезагрузить. Я, собственно, поэтому вопрос тебе и задавал Проброс видеокарты в виртуалку с виндой (хвастаюсь) (комментарий)
Проблема не особо волнует, я ПК не выключаю, но из любви к искусству хотелось бы починить.
Есть ещё msi rx560 aero и asus gtx770, с ними ВМ можно несколько раз перезагрузить (количество раз до фейла рандомное).
ПК у меня древний, мать GA-Z97X-UD7 TH, проц i7-4970k.
Как ты стартуешь ВМ, через libvirt или напрямую?

King_Carlo ★★★★★
()
Ответ на: комментарий от King_Carlo

Проблема не особо волнует, я ПК не выключаю, но из любви к искусству хотелось бы починить.

ОК. Да, симптомы у меня точно такие же. Хост не зависает, но ВМ после этого не включается.

Я нашел решение, а именно вот этот мануал: https://forum.level1techs.com/t/linux-host-windows-guest-gpu-passthrough-rein...

Если сделать все как описано, то можно ребутать, но появляется другой баг: при загрузке ОС и подключении драйвера портится картинка. ОС продолжает штатно работать, но вот на изображение как будто накладывают маску ядовито красного цвета с прозрачностью 70%. Причем это происходит рандомно, где то 1 раз из 10ти получается нормально загрузиться.

Попробуй у себя сделать, плиз, возможно у тебя получится.

Как ты стартуешь ВМ, через libvirt или напрямую?

Стартую через libvirt: с помощью virt-manager в GUI или virsh в консоли.

alex07
() автор топика
Ответ на: комментарий от anonymous

Игру стырить значительно проще. В целом виртуальные преступления намного легче даются и попасться меньше шансов

Deleted
()
Ответ на: комментарий от alex07

Я нашел решение, а именно вот этот мануал: https://forum.level1techs.com/t/linux-host-windows-guest-gpu-passthrough-rein...

На моей железке отлично работает, картинка не портится. Спасибо!
Сделал 15 перезапусков ВМ, замечательно работает.

King_Carlo ★★★★★
()
Последнее исправление: King_Carlo (всего исправлений: 2)
Ответ на: комментарий от King_Carlo

На моей железке отлично работает, картинка не портится. Спасибо!

Вот, а теперь собственно вопрос. Если у нас с тобой железки одинаковые, то почему же на моей портится? Мне опять сказочно повезло купить железку с багом? Хех.

Не мог бы ты мне подсказать версию драйверов Radeon которую используешь?

alex07
() автор топика
Последнее исправление: alex07 (всего исправлений: 1)
Ответ на: комментарий от alex07

Не мог бы ты мне подсказать версию драйверов Radeon которую используешь?

Вчера обновился с 19.4.1 до 19.5.2, на обоих версиях работает норм. Думаю не в драйверах дело.
У тебя два видео от amd, что у тебя в blacklist.conf?
У меня на хосте интеловская интеграшка, amdgpu в блэклисте, в ВМ rx580.

King_Carlo ★★★★★
()
Ответ на: комментарий от King_Carlo

У тебя два видео от amd, что у тебя в blacklist.conf?

У меня в blacklist.conf ничего. Я при запуске сразу девайсы отдаю vfio.

$ cat /etc/modprobe.d/vfio.conf
options vfio-pci ids=1002:67df,1002:aaf0,1022:145f
alex07
() автор топика

Тоже недавно прокинул

Мне тоже сильно надо было пробросить видюху и я целый год мучался. Но вот только недавно победил. Только мне не для игр а для работы, под никсы нормальных САПРов нету(( Только я хотел ещё вот что допилить. У меня два монитора: основной - подключен к двум видеокартам, проброшенной и встроенной. Второй монитор - подключен только к встроенной видюхе и остаётся всегда хостовым. Вот на нём открываю окошко виртуальной машины и через него в эту машину попадаю. Основной монитор переключаю вручную на другой вход подключенный к проброшенной видеокарте. Это неудобно шописец, у монитора кнопки тормозят по секунде и их нужно 4 раза нажать. Я разобрался как переключать источник сигнала на мониторе с помощью ddccontrol, там всё тривиальненько достаточно. Осталось только придумать как выполнить скрипт в момент когда гостевая система получает фокус. Нет мысли как это можно сделать?

alvor
()
Ответ на: Тоже недавно прокинул от alvor

Осталось только придумать как выполнить скрипт в момент когда гостевая система получает фокус.

А можно подробней? Что значит «получает» фокус? Ведь если картинка не выводится с гостевой системы то и фокус она получить не может.

Update: я не совсем понял, по итогу картинка с гостевой машины на один монитор выводится или на два по схеме QXL + GPU?

alex07
() автор топика
Последнее исправление: alex07 (всего исправлений: 1)
Ответ на: комментарий от alex07

«Получает фокус» это когда пара клавиатура+мышь переходят на гостевую систему я имею в виду. Да картинка выводится на два монитора. На виртуальный VNC и физический на видеокарте. Вот через виртуальный монитор я и захожу в гостевую систему. Иначе мне бы пришлось ей отдельные клаву+мышь пробрасывать.

alvor
()
Ответ на: комментарий от parar

единственная 1660ti позволит такой фокус?

Без понятия, ибо не пользуюсь картами nVidia. Но слышал что они что то там блокируют против этой практики и типа танцы с бубнами нужны.

какие самые тяжелые игоры играются?

Я не замечаю разницы вообще по сравнению с голым железом. А играю в основном в ААА всякие, к примеру Far Cry 5, Doom (2016) и т.д.

alex07
() автор топика
Ответ на: комментарий от alex07

Но слышал что они что то там блокируют против этой практики и типа танцы с бубнами нужны.

С nvidia всё просто, пару строк руками в конфиг ВМ добавить.


Since version 337.88, Nvidia drivers on Windows check if an hypervisor is running and fail if it detects one, which results in an Error 43 in the Windows device manager. Starting with QEMU 2.5.0 and libvirt 1.3.3, the vendor_id for the hypervisor can be spoofed, which is enough to fool the Nvidia drivers into loading anyway. All one must do is add hv_vendor_id=whatever to the cpu parameters in their QEMU command line, or by adding the following line to their libvirt domain configuration.

$ virsh edit [vmname]
...
<features>
<hyperv>
...
<vendor_id state='on' value='whatever'/>
...
</hyperv>
...
<kvm>
<hidden state='on'/>
</kvm>
</features>
...

King_Carlo ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.