LINUX.ORG.RU

Проблема с пробрасыванием видеокарты в kvm (vfio-pci)

 , ,


6

2

Пробую пробросить видеокарту гостевой виртуальной машине (qemu/kvm). Последние драйвера установились на гостевой винде нормально. Но есть подозрение, что не все 16 линий pcie получила nvidia на госте, а только одну. Вот что пишет панель нвидии в инфо о системе: http://i.imgur.com/IYlDHTy.png . (Шина: PCI Express x1). При том, что в чистых виндах этот видик отображается как x16. Прошу знатоков посмотреть, что пишется в вашей панельке. Если кому-то надо могу сделать детальный отчёт, но на данный момент игрушки, такие как Max Payne 3, Metro 2033, Rage - заметно лагают и тормозят. Far Cry 3 на госте стартовать отказывается.

Т.е на этой же самой системе в той же самой конфигурации железа, но в винде отображается кол-во линий правильно?

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

Да. Но здесь не понятно, объективную ли инфу даёт софт нвидии.

reagentoo ()

И у тебя сейчас какой чипсет указан?

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

http://i.imgur.com/ckvd3f1.gif . Какой тулзе верить? Железо сейчас такое: i5-4690, asus z97-pro, nvidia gtx 750 Ti. До этого пробовал на z77 чипсете и видеокартой 650 - ситуация была абсолютно такая же. Какой бенчмарк годный есть, чтобы оценить gpu хоста и гостя?

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

Очень хорошо работает. Тормозит не по этой причине. А вот похоже по этой:

-cpu host,kvm=off

Во-первых почему одно ядро? Во-вторых очень зря ставите host. В-третьих у вас похоже эмуляция стоит. kvm=off это что такое?

Вот так лучше:

-cpu Haswell -smp 4,cores=4,threads=1,sockets=1
steemandlinux ★★★★★ ()
Ответ на: комментарий от reagentoo

У тебя кстати очень шикарно пробросилось. Во-первых скомутировался pciex16, во-вторых поддерживается pciex rev 3.0. Это даже в венде далеко не везде работает. Поэтому результат в 2-4 раза выше чем обычно бывает.

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

Странно. И вправду только 1 ядро доступно (посмотрел в cpu-z). «kvm=off» ставил для того, чтобы новые драйвера nvidia заработали, т.к. в них, добавили тест на kvm. У nbhs об этом говорится в ISSUE https://bbs.archlinux.org/viewtopic.php?id=162768 и даётся ссылка на патч «The lastest NVIDIA drivers may not work on kvm, but there's a workarround». Сейчас этот патч уже в апстриме qemu. Чуть позже приду, попробую твой способ.

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

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

Продолжаем. Кроме отрубленного kvm:

В-четвертых. Эмуляция дискового контроллера.

Исправляем

device ide-hd,bus=ahci.1,drive=hdd \

на

-device virtio-blk-pci,drive=drive-virtio-disk0,id=hdd \

В-пятых. Эмуляция сетевого адаптера:

NIC="e1000"

на

NIC="virtio"

Качаем:

http://cc-tmpl.activeby.net/cc/ISO/virtio-win-1.6.8.iso

Дальше добавляем:

    -drive file="/home/user/virtio-win-1.6.8.iso",id=cdrom \
    -device ide-cd,bus=ahci.2,drive=cdrom \

Еще добавляем:

-chardev socket,path=/tmp/qga.sock,server,nowait,id=qga0 -device virtio-serial -device virtserialport,chardev=qga0,name=org.qemu.guest_agent.0

И еще:

-balloon virtio
-spice port=5930,disable-ticketing

А дальше либо ставим венду заново и даём дрова из virtio-win-1.6.8.iso, либо на время оставляем:

-device ide-hd,bus=ahci.1,drive=hdd

на virtio-blk-pci оставляем какую-нибудь затычку

Ставим драйвер на SCSI контроллер, вырубаем венду, удаляем ahci.1 и переносим жесткий на virtio-blk-pci. Вообщем если что спрашивай.

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

Спасибо большое. -cpu решило проблему с тормозами. И фар край запустился и залетал на своих рекомендуемых настройках. Винда стала гораздо шустрее. По поводу virtio - почему бы не пробросить винде отдельный sata-контроллер ASMedia, который есть на плате? Хотя для изернета менять virtio всё равно наверное нужно.

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

По поводу virtio - почему бы не пробросить винде отдельный sata-контроллер ASMedia, который есть на плате?

По производительности и нет особой разницы. Ты USB так понял из-за мыши пробрасываешь?

Проще использовать:

-device usb-mouse -spice port=5930,disable-ticketing

Потом подрубаешься spicec -h 127.0.0.1 -p 5930

Переключаться между окнами shift-f11, shift-f12. Очень удобно и захватывается идеально.

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

Вообще хелпам пройдись, там много интересного. Я например сейчас первый раз увидел name «ich9-intel-hda»

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

Да. Юсбы на отдельную клавиатуру/мышь. Попробовал сейчас асмедию пробросить. Не получилось. Вот что выдаёт qemu:

QEMU 2.1.1 monitor - type 'help' for more information
(qemu) qemu-system-x86_64: -device vfio-pci,host=08:00.0,bus=pcie.0: vfio: error, group 9 is not viable, please ensure all devices within the iommu_group are bound to their vfio bus driver.
qemu-system-x86_64: -device vfio-pci,host=08:00.0,bus=pcie.0: vfio: failed to get group 9
qemu-system-x86_64: -device vfio-pci,host=08:00.0,bus=pcie.0: Device initialization failed.
qemu-system-x86_64: -device vfio-pci,host=08:00.0,bus=pcie.0: Device 'vfio-pci' could not be initialized

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

Спасибо за ссылку. Я так понимаю, нужно биндить всю группу, чтобы она стала «жизнеспособной». http://vfio.blogspot.ru/2014/08/iommu-groups-inside-and-out.html . В моём случае это 10 устройств группы 9. Все ли их нужно биндить - пока не понял. http://paste.org.ru/?cvyv3a

reagentoo ()

Но есть подозрение, что не все 16 линий pcie получила nvidia на госте, а только одну.

это железопроблемы. Впрочем, можно попробовать перекинуть в другие слоты.

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

Получилось пробросить. Asmedia sata в одной группе с Asmedia usb - поэтому проброшены они оказались вместе. В принципе, ну и пусть лишние юсбы на задней панели виндовые будут. В скрипте добавил следующее:

...
bind_vfio 0000:00:1c.0 0000:00:1c.3 0000:00:1c.6 0000:03:00.0 0000:04:01.0 0000:04:03.0 0000:04:05.0 0000:04:07.0 0000:08:00.0 0000:09:00.0 # sata
...
-device vfio-pci,host=08:00.0,bus=pcie.0 \
-device vfio-pci,host=09:00.0,bus=pcie.0 \
...

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

У меня Asus crosshair iv formula, проброс еще со времен pci-assign работает. Правда тогда еще тормозной i/o был и это очень сильно бесило. А сейчас зато не отличишь хост от гостевой.

Пробросил USB 3.0 контроллер в виртуалку, там всё нормально определилось, вставил флешку и долго офигевал, когда она открылась в хосте, вставил «синюю» флешку, она в госте открылась. Там похоже переключение контактов на уровне контроллера юсб-устройства происходит.

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