I currently use VM->VM daily, I use the following configuration on my ThreadRipper platform.
Host: Debian, VGA: Old quadro something, just some junk and a ton of storage in a ZFS array.
Guests:
- Workstation, Debian, VGA: AMD VEGA, USB hub passed through with KB & Mouse
- Games, Windows 10, VGA: GTX1080Ti, using LookingGlass from the Workstation
- Web Development, Debian, HTTP server, debugging enviornment, etc…
- Phone Server, Debian, Running Asterisk providing VOIP services
- GitLab Server
- Build Server, Debian, kernel builds, etc.
The host is configured to expose the NUMA topology to Linux (Set memory interleaving to “Channel” in the BIOS), which I then use numactl to launch qemu and restrict VMs to one of the two dies, keeping memory allocations local to the VM.
I run OpenVSwitch on the host so I can VLAN tag each VM as appropriate (ie, Windows is on a “Guest” VLAN as I don’t trust it)
The host kernel and QEMU has been patched to support HyperThreading on the Ryzen and ThreadRipper platform, as well as applied the PulseAudio patch for windows Audio. For Linux guest audio I simply connect the guest to the host’s PulseAudio server over the local lan.
LookingGlass has problems with throughput though from VM -> VM, at current I can not get enough bandwidth to support 1080p well. I will re-investigate this though when I have some free time.