Hi,
I've been concerned with Remote Desktop Session Hosts and graphics intensive applications like videos (although I wouldn't call videos graphics intensive when I think about CAD or computer games) for quite a while now. I've started with Windows 2008 R2 RemoteFX
and have moved on to Windows 2012 R2 and RDP 8 / 8.1 with adaptive encoding and H.264. And now I've come to Windows 2016 TP5 offering AVC 444 mode. In all versions I've experienced heavy problems when it comes to watching videos. Well, there was Multimedia
Redirection, offering a smooth video experience. But it only worked with Media Player and e.g. not with videos on the internet like on YouTube or with third party video players. Now it is completely removed from RDP 10 (https://blogs.technet.microsoft.com/enterprisemobility/2016/01/11/remote-desktop-protocol-rdp-10-avch-264-improvements-in-windows-10-and-windows-server-2016-technical-preview/).
But why is that low performance the case? RDSH switched to server side rendering with original RemoteFX, didn't it? So the client can not limit the server performance anymore. Ok, I understand, If the client is not fast enough in decoding the content sent
by the server, I will experience a bad video performance. But I've tried with the following setup:
- Server: Win 2016 TP5, 2 x Intel Xeon E5335 (each 4 cores, 2.0 GHz), 8 GByte of ram
I'm not sure, wether it supports PREFETCHW (required by Win 2016). It doesn't support SLAT, but is that really necessary for RDSH? - I don't use Hyper-V or VDI. - Client: mstsc.exe on Windows 10 (Version 1511 or later), modern Core i7 processor (8 cores? - at least 4 with HT)
- Gigabit network
I think the client's computing power is definitely high enough, mstsc shows maximum load of 12% (4k, fullscreen youtube video - OK, I don't expect that to work, but HD 1080p should at least be possible!). On the other hand, 12% is the magic load, assume
mstsc.exe had no multithreading capabilities. Then 12.5% would be the maximum load (showed by Task-Manager) to achieve on a 8 core machine (100% load on only one core.)
Well, the server's hardware is pretty outdated. But no 100% cpu load there. If the hardware was the limiting factor, I would expect such a high load to appear in Task-Manager. I known, this doesn't need to be right, but I've also tried on modern machines
with Xeon E5-2600 (v2/v3 ? - I don't remember) processors. Ok, I've used Windows 2012 R2 there, without 2016 improvements. Anyway, the video performance was bad.
One thing I've never tried was putting an aditional graphics card into the RDSH. Some people say, Win 2012 (R2 ??) and newer (?) would support this. I know, there's theRemote Session Environment - Use the hardware default graphics adapter for all Remote Desktop Services sessionsgpo, but I've actually never tried it. Again, I'm mostly talking about videos like HTML5 content, Adobe Flash Player or another (locally installed) video player.
To clarify this, with 'bad performance' I'm talking about stocking videos, artifacts, low fps and such things.
Additionally, video games (unfortunately I've tried with OpenGL ones only) are with ~1 fps completely unplayable. But I understand that games use the gpu which is not available in RDSH sessions. Those might not be the target application of RDSH, too. One
thing I've realized is that the highest cpu load is with the game itself and not with the RDSH service (svchost.exe instance ?!). The same behaviour is true for videos - the highest load is with the browser, e.g..
But why is that the case? I just can't get it, because my fairly old Core2 Duo system can decode 1280x1024 HTML5 and Flash Content fluently without using the hardware decoder. In an RDSH session that is impossible. Well, it improved over the last few years
with RemoteFX etc., but it is not as good as if I open the browser on the RDP client computer and go with this. - What am I doing wrong?
I would be really happy about any advice or explanation! Please correct me at any point if I'm wrong!
Yours,
T. Erbesdobler