These post titles are becoming a bit of a mouthful…
Anyway, did some testing today to see what the CPU and GPU usage was when playing full screen video.
Test server is an HP Z220 workstation with a single Intel Xeon E3-1245 V2 3.4GHz CPU. That’s a quad core plus hyperthreading CPU. System has 16GB RAM, 2 x 1GB NICs teamed with LACP/802.3ad.
I also have a couple of different GPUs for testing, an nVidia Quadro 4000 (2GB RAM), an nVidia GTX 680 (4GB RAM) and an ATI Radeon HDX 6970 (2GB RAM). I can’t test the latter two at the moment as the Z220 PSU doesn’t have the right output cables so I’m waiting for an adaptor. Will update the post when that arrives and I get around to testing the two cards.
Of course, RemoteFX doesn’t require a GPU at all, but I had assumed that by offloading the realtime H.264 video encoding to a GPU it’d allow for somewhat higher density of users on the host.
For all the test clients I used PCs running Windows 7 or Windows 8, the 6.2.9200 Remote Desktop Connection client, supporting RDP 8.0. The hardware was at least a 2.33GHz Core2 Duo CPU. RDP sessions were run full screen on 1280×1024 monitors, RDP Experience settings were set to LAN (10Mbps or higher), and UDP was used as the video transport protocol. Clients had either 1Gbps or 100Mbps network connections. Despite having previously seen lower network bandwidth on 100Mbps clients vs 1Gbps clients, the CPU/GPU usage figures didn’t seem to vary so I gave up noting the client connection speed.
CPU usage was read via Performance Monitor, sampling every second and averaging over 30 seconds, GPU Usage was read via GPU Caps Viewer which gives a point in time reading updated once a second that I tried to roughly average in my head over several seconds. I noted which processes were consuming CPU, and it was basically iexplore (i.e. the Adobe Flash player decoding the video stream), represented by the “Client x” value on the charts below, and termsvcs (which is the Remote Desktop Session Host running as an svchost process). The per-process CPU counter used was % Processor Time for the relevant iexplore and svchost instance(s) from the Process object. The overall CPU counter was the standard _Total instance of the Processor Information object’s %Processor Time counter.
As usual, I can’t make Excel draw a graph how I want, so these are a bit messy.
What’s interesting is that despite apparently doing a reasonable amount of work, the GPU seems to make no difference to the CPU usage, if anything the amount of CPU consumed by the termsvcs process increases when the GPU is present.
Video playback with up to four clients was great, but with five clients the audio started to drop out and get out of sync.
Also, once four clients were playing you can see (I assume) the effect of Fairshare reducing the amount of CPU consumed by each client iexplore process.