The Guest Operating System(s) (Windows… for now)
I would write what it was like to setup qemu+kvm but the process of setting it all up… was quite boringly simple. One can simply follow the (again, excellent) Arch wiki page about it and have a Windows VM setup within minutes. Now this setup is great if you are only handling compute based workloads with only ~3% performance overhead. You can even get decent graphics acceleration with qxl/SPICE. However, this is nowhere near native performance and not good enough if you want to play games.
Now… you can do something even more interesting if you have two GPUs in your system. Say… an integrated Intel GPU that comes with your CPU and a dedicated card (AMD/NVIDIA). You use the integrated card for your host system (as by our design, it is lightweight and doesn’t require much power to drive it) and use your more powerful dedicated GPU for your guest. We must have a setup such that we directly pass in the PCIE controller to the guest VM with the host having no access to it. This makes use of VFIO driver framework (Virtual Function I/O). This means we directly passthrough the GPU with virtually no overhead to the guest OS. To set all THAT up was yet another ordeal… but the results were definitely worth it. I will leave that for the next post!