Запускаем kvm + virgl
Коллеги, кто успешно использует kvm с virgl на любой системе, отзовитесь.
Если не считать проброс PCI-устройства, то сегодня virgl - это единственный способ получить 3D-ускорение в гостевой системе, достаточное для просмотра видео высокого разрешения и, простите, для открытия современных свистящих сайтов в браузере. :)
Речь идет про конфигурацию, которая в virt-manager получается следующим образом:
- В секции «Video» устанавливается Model = virtio и галка на «3D Acceleration»
- В секции «Display» выбирается Listen type = none и ставится галка на «OpenGL»
Соответствующий XML:
<graphics type="spice">
<listen type="none"/>
<image compression="off"/>
<gl enable="yes" rendernode="/dev/dri/by-path/pci-0000:XX:00.0-render"/>
</graphics>
<video>
<model type="virtio" heads="1" primary="yes">
<acceleration accel3d="yes"/>
</model>
<address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x0"/>
</video>
После чего имеем… лагающее слайдшоу. Возможно из-за vblank_mode=3 по умолчанию.
Если же использовать vblank_mode=0 (указав через переменные окружения при запуске virt-manager), то FPS полный, видео успешно проигрываются. Но раз в пару часов падают хостовые иксы, либо система встает колом - ребутнуться можно только через sysrq.
Получилось найти быстрый и гарантированный способ воспроизведения падения:
- Стартуем ВМ:
qemu-system-x86_64 \
-smp 4 -m 8192 -enable-kvm -cpu host \
-vga none -device virtio-vga-gl \
-display sdl,gl=on,grab-mod=rctrl \
video_test.qcow2
-
В гостевой системе запускаем glxgears или любое другое требовательное к графике приложение.
-
Дальше достаточно поальттабаться между окнами в гостевой системе или между ВМ и хостом. Обычно достаточно секунд 20, чтобы словить.
Причем, как видно из примера выше, неважно, работать ли с virt-manager и Spice или вручную запускать qemu-system-x86_64 со, скажем, SDL - падения происходят везде.
Более того, проблема воспроизводится как на встроенной графике Intel (10 gen), так и на интегрированном видео AMD, на разных компьютерах. В последний раз тестировалось на Debian 12 и QEMU 7.2.13. Но актуально и для Debian 11, и для Ubuntu 22.04: на всех компьютерах с virt-manager, которые попадались в руки, virtio стабильно лагает (дефолтный vblank_mode=3) или падает (vblank_mode=0).
До сих пор не верится, что никто с этим не сталкивался.