Which hardware and setup is good for VDI / decent graphic performance?

Asano

Well-Known Member
Jan 27, 2018
55
10
48
43
Hi,

I'm thinking about using Proxmox for a SOHO VDI setup. So no Citrix/VMWare Horizon/WhatSoEver but just a hand full (~10) plain Windows VMs accessed via Windows RDP or maybe SPICE and this also only via LAN (and the office in question even has 10GbE fiber laid out).

The requirement for this setup would be that lag free 1080p videos should be no problem. I already did some tests with Windows VMs in data centers on Proxmox which had no virtual GPU or graphic optimization at all and they already nearly fulfilled the requirement. So I'm quite positive that this can work, however I'd like to optimize things and am not so sure If I got the options I have right. So maybe some one can help me out a little or comment a little on some points:

  1. From https://pve.proxmox.com/pve-docs/chapter-qm.html I assume Mediated Devices / vGPUs are my best option and I see two in price range: Intels GVT-g and AMDs MxGPU.

    • Regarding AMD MxGPU, I think the best hardware to buy right now would be the AMD FirePro S7150, but would it even work with Proxmox? I can find only very little resources on MxGPU...

    • Regarding GVT-g it seems the strongest CPUs it is compatible with would be Kabylake and here Intel Xeon E3-1285 v6.
      However a Coffee Lake Intel Core i9-9900K would have nearly twice as much performance and regarding https://github.com/intel/gvt-linux/issues/14#issuecomment-453521189 there already is a test branch compatible with it. Would it be much work to get it to work with Proxmox (I'm no expert here :/ ) and will Proxmox probably pick it up some day?

  2. Are there maybe better options than Mediated Devices which also meet my requirement? For example a AMD Ryzen Threadripper 2950X also looks like a great piece of commodity hardware for the money (and since I'd setup a cluster of 2 'strong' nodes and one smaller one just to get to the minimal cluster size of 3 anyways, commodity hardware is fine).
    Could I maybe utilize other commodity GPUs without special virtualization capabilities as well or would they just be dead weight in such a setup?

  3. Maybe this is answered through 2. already but would SPICE be good in such a setup? I didn't know it so far and therefore am not very sure, what it actually does and what it is meant for...

Any input would be very welcome :)
 
https://pve.proxmox.com/wiki/SPICE

As for GPU assisted, remember that GPU bifurcation is not a free option and is not available with proxmox. I dont know if a single box with 10 windows vms will get you smooth playback via spice (it might if your server is powerful enough) but a better solution to what you're after is a single Windows server instance (or just windows server) serving terminal services.
 
Regarding AMD MxGPU, I think the best hardware to buy right now would be the AMD FirePro S7150, but would it even work with Proxmox? I can find only very little resources on MxGPU...
we have one here and it works.. under the right conditions, see https://pve.proxmox.com/wiki/MxGPU_with_AMD_S7150_under_Proxmox_VE_5.x

    • Regarding GVT-g it seems the strongest CPUs it is compatible with would be Kabylake and here Intel Xeon E3-1285 v6.
      However a Coffee Lake Intel Core i9-9900K would have nearly twice as much performance and regarding https://github.com/intel/gvt-linux/issues/14#issuecomment-453521189 there already is a test branch compatible with it. Would it be much work to get it to work with Proxmox (I'm no expert here :/ ) and will Proxmox probably pick it up some day?
in my experience this works also good, but the intel igpus are very limited (e.g. a i7 - 7700k could only have 2 vgpus)
as for coffelake support, i guess this has to wait until those changes are in the upstream kernel and get either backported to the ubuntu kernel, or we upgrade to version with those
changes in it... but this can be a while
 
Thanks for the links. The Proxmox wiki beats me to the punch again ;-)

I did quite a lot SPICE testing now and I'm surprised how bad it is... sure, everything I do tests with right now is hard to compare to the setup I'm planing but still, while MS RDP is already nearly lag free with 1080p videos SPICE was a lag nightmare (or rather the video would slow down tremendously) on the exact same VMs (only with SPICE display) already with 720p in *all* my tests. Since the viewer also seems much more complicated when it comes to for me required stuff like USB and cam passthrough SPICE is ruled out. Maybe it's good in other use cases but at least for Windows VMs it seems to me there would be no reason to choose it over MS RDP.

https://pve.proxmox.com/wiki/MxGPU_with_AMD_S7150_under_Proxmox_VE_5.x basically means I'd have to go for an EPYC Processor and Supermicro board to make MxGPU work... That plus the FirePro itself is quite pricey compared to for example an Intel Core i9-9900K alone.

So now I'm thinking since my recent tests really performed quite well already without vGPUs and I will have quite a lot of free PCI slots in my three node cluster anyways I'll go for the Core i9-9900K. Maybe some day I can make use of GVT-g with it. And should it turn out a VM needs extra graphic power before that (there are only few which have the video requirement anyways) I'll plug in a 50€ GPU and pass it through to the specific VM. That feels a little shabby compared to EPYC/Supermicro/FirePro but hey :D Direct passthrough is also well documented and I don't see a reason why this shouldn't work. Am I wrong?
 
basically means I'd have to go for an EPYC Processor and Supermicro board to make MxGPU work... That plus the FirePro itself is quite pricey compared to for example an Intel Core i9-9900K alone.
well it probably will work on other mainboard/cpu combinations too, but those were tested by us since we had it :)

Maybe some day I can make use of GVT-g with it.
probably, but it will take a while

And should it turn out a VM needs extra graphic power before that (there are only few which have the video requirement anyways) I'll plug in a 50€ GPU and pass it through to the specific VM. That feels a little shabby compared to EPYC/Supermicro/FirePro but hey :D Direct passthrough is also well documented and I don't see a reason why this shouldn't work. Am I wrong?
no this should work
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!