Games em Máquina Virtual com GPU Passthrough | Entendendo QEMU, KVM, Libvirt



Games em Máquina Virtual com GPU Passthrough | Entendendo QEMU, KVM, Libvirt

Games em Máquina Virtual com GPU Passthrough | Entendendo QEMU, KVM, Libvirt

Este episódio levou literalmente MESES pra eu conseguir fazer. Entre atualizar o hardware da minha máquina, testar todo tipo de combinação de configuração, até conseguir rodar jogos da Steam, num Windows virtualizado, a quase mesma velocidade que nativo.

Hoje vamos entender o que é QEMU, KVM, Libvirt, como passar uma GPU da NVIDIA diretamente pra dentro de uma VM, e como garantir a máxima performance na virtualização, incluindo entender como diversos componentes de hardware e do Linux funcionam.

Este conteúdo vai ser DENSO, então não deixem de usar os capítulos abaixo pra se orientar e consultar todos os links que deixei listado aqui.

## Errata

Em 49:53 eu falo 48 ou 44 megahertz mas o certo seria kilohertz.

## Capítulos

00:00:00 – Intro
00:00:44 – Cap 1: Meu Setup (até 2024, senão podem pular)
00:05:51 – Cap 2: Introdução à Virtualização | Por que não Dual Boot?
00:08:26 – Cap 3: O que é IOMMU | Setup das GPUs
00:13:46 – Cap 4: Redes Virtuais | Minha placa 10 Gigabits
00:17:57 – Cap 5: Criando a Máquina Virtual | Virt-Manager
00:19:51 – Cap 6: Recapitulando UEFI | O que é OVMF?
00:23:06 – Cap 7: Entendendo CPUs | Pinagem de CPUs
00:33:01 – Cap 8: O que é QEMU? E KVM? | Libvirt
00:38:58 – Cap 9: Limitando CPUs do Host | Cgroups
00:43:06 – Cap 10: Configurações de Performance | Features Importantes
00:45:32 – Cap 11: Monitor Virtual e Streaming | SPICE e QXL
00:47:22 – Cap 12: Configurando Áudio | Pulseaudio e Pipewire
00:50:01 – Cap 13: PCI Passthrough | NVIDIA GPU
00:50:27 – Cap 14: Keyboard, Video, and Mouse | KVM via EVDEV
00:52:47 – Cap 15: Instalando Windows em Disco VirtIO | Fedora VirtIO ISO
00:57:15 – Cap 16: Demonstrando Performance com Games | GPU Passthrough
00:57:53 – Cap 17: Anti-Cheat em Elden Ring | Dual Boot
01:00:24 – Cap 18: Lidando com Monitor com 2 Inputs de Video | Escolhendo Inputs
01:03:08 – Cap 19: Lidando com Suspend do Host | Desligando Suspend
01:05:04 – Cap 20: Conclusão | Mais Coisas
01:07:49 – Bloopers

## Links

Se alguém ficou curioso com o XML inteiro da máquina virtual que mostro no video: https://gist.github.com/akitaonrails/d4d98b03f1126c81a20eb3ea57027ad2

* https://wiki.archlinux.org/title/PCI_passthrough_via_OVMF
* https://wiki.gentoo.org/wiki/GPU_passthrough_with_libvirt_qemu_kvm
* https://github.com/virtio-win/kvm-guest-drivers-windows
* https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.229-1/
* https://github.com/rockowitz/ddcui
* https://github.com/rockowitz/ddcutil/issues/35
* http://www.ddcutil.com/commands/
* https://github.com/olavmrk/usb-libvirt-hotplug
* https://getlabsdone.com/how-to-install-windows-11-on-kvm/#Add-the-windows-11-virtio-driver
* https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/virtualization_administration_guide/sect-virtualization-adding_storage_devices_to_guests-adding_hard_drives_and_other_block_devices_to_a_guest
* https://linuxhint.com/install_virtio_drivers_kvm_qemu_windows_vm/
* https://www.tecmint.com/manage-kvm-storage-volumes-and-pools/
* https://passthroughpo.st/simple-per-vm-libvirt-hooks-with-the-vfio-tools-hook-helper/
* https://www.libvirt.org/hooks.html
* https://archlinux.org/packages/extra/x86_64/qemu-emulators-full/
* https://unix.stackexchange.com/questions/30106/move-qcow2-image-to-physical-hard-drive
* https://libguestfs.org/virt-resize.1.html
* https://www.cyberithub.com/resize-qcow3-image-with-virt-resize-kvm-tools/
* https://loc-clan.com/files/win10
* https://www.reddit.com/r/VFIO/comments/l8g6iy/pc_suspends_itself_while_in_vm_due_to_suspend/
* https://www.linaro.org/blog/the-evolution-of-the-qemu-translator/
* https://github.com/foxlet/macOS-Simple-KVM
* https://github.com/foxlet/macOS-Simple-KVM
* https://passthroughpo.st/explaining-csm-efifboff-setting-boot-gpu-manually/
* https://passthroughpo.st/explaining-csm-efifboff-setting-boot-gpu-manually/
* https://github.com/vanities/GPU-Passthrough-Arch-Linux-to-Windows10
* https://github.com/rockowitz/ddcutil/issues/35#issuecomment-337919874

* Podcast: https://anchor.fm/akitando/episodes/Akitando-137—Games-em-Mquina-Virtual-com-GPU-Passthrough–Entendendo-QEMU–KVM–Libvirt-e1u8okr
* Transcript: https://www.akitaonrails.com/2023/02/01/akitando-137-games-em-maquina-virtual-com-gpu-passthrough-entendendo-qemu-kvm-libvirt