QEMU 6.1以降でVirgil GPUが使用できなかった問題を解決
Posted on 2022年01月31日 in tech
1 概要
Virgil 3D GPU (Virgl, Virtio GPU) はQEMU上の仮想マシンで使用できる仮想GPUです。 これはホストPCのGPUを利用して動作しています。 私の環境ではLLVMpipeよりも性能が高く感じ、Gentooの仮想マシンなどで使用していました。 しかし、QEMU 6.1へ更新以降、VirgilではなくLLVMpipeが使用されるようになっていました。
2 動作環境
2.1 PC環境
ホストPCの環境は以下のとおりです。
OS | Fedora GNU/Linux 35 |
CPU | Ryzen Threadripper 2950x (16 cores, 32 threads) |
Memory | 128 GiB |
仮想PCの環境は以下のとおりです。
OS | Gentoo GNU/Linux |
CPU | 8 cores |
Memory | 16 GiB |
2.2 QEMUの設定
実際に使用していたQEMUの起動オプションは以下です。
QEMU_AUDIO_DRV=alsa\ qemu-system-x86_64\ -hda gentoo.qcow2\ -m 16G\ -cpu host\ -machine type=pc,accel=kvm\ -smp 8\ -vga virtio\ -display gtk,grab-on-hover=true,gl=on\ -device AC97\ -device nec-usb-xhci,id=usb,bus=pci.0,addr=0x8\ -device usb-tablet
-vga virtio により、Virtio GPU (=virgil GPU)を使用します。
-display *** により、OpenGLを有効にしGTKウィンドウに描画します。
3 暫定対策
QEMU 6.0系を QEMU からダウンロードし、手動でビルドしました。
ソースディレクトリで以下を実行しインストールしました。
./configure
make -j32 # 32はビルドプロセスの並列スレッド数
sudo make install
4 調査、原因と対策
調査したところ、Virgil公式のGitLabにて以下の記事を見つけました。
Virglrenderer broken on QEMU 6.1.0 for nvidia hosts (#253)
こちらの方はnvidiaホストを利用しているそうですが、私と似た問題に遭遇しています。
メンテナさんの返信によると、graphics deviceの呼び出し方法が変更されたとあります。 記述どおりに以下のようにQEMU起動オプションを変更したところ、Virgilを使用できました。
QEMU_AUDIO_DRV=alsa\ qemu-system-x86_64\ -hda gentoo.qcow2\ -m 16G\ -cpu host\ -machine type=pc,accel=kvm\ -smp 8\ -device virtio-vga-gl\ # 変更箇所 -display gtk,grab-on-hover=true,gl=on\ -device AC97\ -device nec-usb-xhci,id=usb,bus=pci.0,addr=0x8\ -device usb-tablet
以上
6 更新履歴
- 2022-01-31 新規作成
- 2022-02-01 ハイパーリンク文字列をURLからタイトルへ変更、英単語の表記修正など