Pular para o conteúdo

Virtio-Venus

  • Aceleração 3D com desempenho Próximo do Nativo

Em sistemas operativos que utilizam a libvulkan, tais como Linux, BSDs e Android, pode obter um desempenho próximo do nativo ao traduzir as chamadas da VM para Vulkan e depois diretamente para a sua GPU e vice-versa, sem ter de a dedicar (passthrough) à VM.

Infelizmente, o Virtio-Venus não está disponível no VMM, pelo que será necessário utilizar a qemu-cli. Terá de tomar nota do nome que deu à sua VM e da sua localização.

Após instalar uma VM elegível, pode abrir o terminal e criar um comando qemu-cli para a sua máquina virtual; aqui está um exemplo da minha VM CachyOS:

Terminal window
qemu-system-x86_64 \
-enable-kvm \
-M q35 \
-smp 6 \
-m 12G \
-cpu host \
-net nic,model=virtio \
-net user,hostfwd=tcp::2222-:22 \
-device virtio-sound-pci,audiodev=my_audiodev -audiodev pipewire,id=my_audiodev \
-device virtio-vga-gl,hostmem=4G,blob=true,venus=true \
-vga none \
-display gtk,gl=on,show-cursor=on \
-usb -device usb-tablet \
-object memory-backend-memfd,id=mem1,size=12G \
-machine memory-backend=mem1 \
-drive if=pflash,format=raw,readonly=on,file=/usr/share/edk2/x64/OVMF_CODE.secboot.4m.fd \
-drive if=pflash,format=raw,file=.config/libvirt/qemu/nvram/archlinux_VARS.fd \
-drive file=.local/share/libvirt/images/archlinux.qcow2
  • -smp 6 significa 6 núcleos de CPU
  • -m 12G significa 12GB de RAM
  • -net user,hostfwd=tcp::2222-:22 significa que a porta 22 está a ser reencaminhada do anfitrião (host) para a VM como porta 2222; assim, se quisesse uma ligação SSH para a VM a partir de algum dispositivo, faria:
Terminal window
ssh -p 2222 vmusername@vmipaddress
  • -device virtio-vga-gl,hostmem=4G,blob=true,venus=true este é o controlador (driver) venus; infelizmente ainda não está presente no virt-manager. Assim que estiver, toda esta secção (exceto o modo de utilizador) será substituída.
  • -hostmem=4G significa que estou a permitir que a VM utilize até 4GB da VRAM da minha GPU.
  • -object memory-backend-memfd,id=mem1,size=12G nesta secção, o tamanho (size) corresponde à RAM que atribuiu à VM, no meu caso, 12GB.
  • -drive if=pflash,format=raw,readonly=on,file=/usr/share/edk2/x64/OVMF_CODE.secboot.4m.fd este é o ficheiro de firmware para a VM; este é apenas o caminho para o mesmo.
  • -drive if=pflash,format=raw,file=.config/libvirt/qemu/nvram/archlinux_VARS.fd esta é a nvram da VM; sem isto, ou com isto definido como apenas leitura (read-only), a VM não irá arrancar.
  • -drive file=.local/share/libvirt/images/archlinux.qcow2 este é o caminho para o ficheiro .qcow2 (o armazenamento da VM). (Pode notar que o meu dispositivo de áudio não é o ich9 neste caso, mas sim o pipewire; isto é irrelevante.)