Since this worked out pretty well for hosting small LAN parties I figured I would share.
The gist of it was that I ran 3 Windows 10 VMs on a Xeon E5-2680 with 32GB of non-ecc DDR3 in a Gigabyte X79 UD3 motherboard, passing through 2 GTX 1060s (3GB) and 1 GTX 1050ti. The host OS (Fedora 30) booted off a GT 710 that fit into a PCIe 1x slot. Rather than passing the VM boot disks to physical disks I ran them off of a single m.2 SSD. I followed the most recent VFIO guide for Fedora with a few tweaks. Each VM got 2-cores/4-threads, 8GB of RAM, and a 250GB qcow2 disk. Huge pages were enabled and set to 2MB blocks. Currently I set up VNC on each VM for management outside of Steam but plan to switch to Looking Glass.
RDP was considered at the time I first set this up about 2 years ago but the problem is that it creates a virtual desktop which disconnects steam (and any 3D acceleration).
A “poor man’s VDI” was used with Steam in-home streaming all passed through the 1Gb NIC on the motherboard in order to tidy things up and avoid issues with long HDMI cables or USB passthrough. For this to work all of the VMs needed to have UAC disabled and Steam autostart with Windows (disable big-picture mode for a normal desktop experience). Each Nvidia GPU being passed-through also needed a dummy HDMI/Displayport plug to get the GPU to POST and enable 3D acceleration. I used the official Steamlinks but Raspberry Pi’s are probably more useful now that they are supported. Each 1080p stream is ~30Mb/s so there is plenty of headroom in that 1Gb connection. For the Steamlink systems audio was handled by the monitor’s headphone-out connection though a USB DAC also worked.
Overall there were no performance issues or stability issues though there was a concern of the GPUs overheating as the EVGA GTX-1060 3GB models came with rather small heatsinks. The case has room for longer GPUs so I might consider that with replacement GPUs (at the moment it isn’t necessary).
We played CS:GO, Garry’s Mod, and Payday 2 so none of the games were that demanding especially since the clients all ran at 1080p. Responsiveness was great with Steamlink with no noticeable input lag or stutters. The only minor issues were when it came to going through an installation wizard, the steamlink stream was not allowed to go through any UAC prompts or click with wizards using admin privileges. VNC was an easy workaround for that.
Right now I want to expand on the number of clients I can host as parties grow as well as increase the flexibility of resource allocation depending on the number of people we get. SR-IOV support for the GPUs would be great whenever that comes around but it also needs to be offset but the relative performance of the whole GPU. If I were to get the Radeon Pro V340 MxGPU with its dual Vega 56’s clocked down to 800MHz I would guess that I would realistically only be able to host 4 gamers with half-decent 1080p high settings performance. Also I’m sure I would need to replace the X79 UD3 with something that supports built-in 10Gb ethernet and IPMI. Gigabyte has an EPYC EATX board out there but I don’t think I would want to pay the EPYC price. I doubt Threadripper would POST in that board either. Without SR-IOV I would look for the fastest single-slot GPUs available which is still the Galax Katana GTX 1070, though I don’t know how hot these would get when stacked 7-high with no gaps between them. I haven’t seen lower-end Pascal/Turing cards yet that come with single-slot coolers either. AMD is currently out of the question as they still have the reset bug. Watercooling is out of the question as each block would already cost about 1/3 of each GPU’s price, not to mention the difficulty of removing specific GPUs for troubleshooting.
In all it’s a somewhat simple system for now that “only” weighs 50 lbs but I’ll definitely want to expand this thing into quite a monster.