Windows Server 2012 Remote Desktop Session Host RemoteFX CPU and GPU usage

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.

I was playing full screen videos from Vimeo, trying to find ones that had a lot of motion or many scene changes to keep the pressure up on the video encoder.

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.

2012 video cpu no gpu

2012 video cpu and gpu

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.

This entry was posted in Hardware, Performance, Remote Desktop, Windows and tagged , , , , , , . Bookmark the permalink.

12 Responses to Windows Server 2012 Remote Desktop Session Host RemoteFX CPU and GPU usage

  1. Jake N. says:

    So in your opinion is the GPU adding any performance boost to an RDSH session? I have looked high and low on the internet for info on this and your blog is the only thing I’ve found that seems to discuss the use of a GPU on Server 2012 in an RDSH setup. I know that a GPU helps a VDI session but I can’t find anything on whether it helps a Server 2012 Remote Desktop session.

    • rcmtech says:

      I’m really not sure that it does anything other than eat extra electricity, it’s rather strange. I possibly remember the framerate being a little higher, but I’ve not had a chance to go back a re-test since posting those results. So far it’s looking like lots of CPU is best, but I’m not convinced this is how it should be… and have so far had no luck getting any official response from Microsoft or Nvidia.

  2. Kambot says:

    Did any of the client machines’ CPUs have EPT (SLAT) support? From what I’ve found in my research, in order to use the benefits of Server2012’s new RemoteFX codec in RDP, the client machines need to be running windows 8, and have a SLAT enabled CPU. I could be wrong, but what you’re looking into is exactly what I am trying to figure out myself. I’m rebuilding a dell precision 690 (xeon 51xx, 53xx w/ no SLAT/EPT CPU support) into a T7500 with either a 55xx or 56xx.

    I’m trying to figure out how fast the CPU needs to be to support h.264 encoding…will 2.8ghz work, 2.93, or do i need to be in the 3.4ghz range. Since hyper-v sees a QC with hyperthreading as 8 logical cores, of which i can assign 4 to a VM, I don’t think I can consider the max hyperthreaded clock speed…correct? Any thoughts???

    thanks!!!

    • rcmtech says:

      No, none of them had SLAT CPUs. From my research (!) clients (i.e. the machine on the user’s desk) need to be Win7 with RDP 7.1 or Win8 in order to work fully with RemoteFX. The server needs SLAT CPUs for RDVH (for per-user VMs running a Windows client OS (i.e. VDI)).

      I just found this: “it is recommended to configure a physical GPU on RDSH only if all the applications in use by the user sessions are 3D – if there is a mix of GDI, 2D, and 3D applications in the workload (e.g. Office apps are in the mix), you will get better overall server scale/density by continuing to use the default software GPU on the RDSH” (from MSFT comment here: http://blogs.technet.com/b/windowsserver/archive/2012/05/09/windows-server-2012-remote-desktop-services-rds.aspx?PageIndex=2#comments)
      Which is a shame, as it seems to be implying that the GPU will not be used to offload video transcoding.

  3. letsreplay says:

    Agreed with Jake N. – there is no much info about this on the internet. This post is great, but a have a question – did you test youtube videos?

    I’m trying to setup terminal server on GA-Z77-DS3H/i7-2600/16GB without any additional GPUs. Right now it’s running Windows Server 2008 R2, on remote desktops vimeo work pretty fine even on full screen 1080, but youtube have audio/video desync about 500-800ms. No matter what quality (360p or 1080p) or browser (tried Chrome/Opera/FF). Ofc it’s works perfect locally (even BDrip’s running without lags).

    So, I’m interesting will RDP 8.0 be better in that case? Should I go with Windows Server 2012?

    • rcmtech says:

      No, I didn’t test YouTube. If only because I haven’t spent more than a few days playing with this and I know it’s easier to find nice videos to watch on Vimeo than YouTube! I do plan to do more work on this in the next few months…

  4. GG says:

    More updates about this topic please! :)

  5. Pingback: Why I’m not deploying Windows desktops using Remote Desktop Services | Robin CM's IT Blog

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s