How to get awesome video performance with XenApp and Raspberry Pi thin client

There is a lot of excitement these days about the performance of the Raspberry Pi as thin client for XenApp and XenDesktop. I’ve made a video with a side by side comparison with a HD youtube video playing on a XenApp session with Raspberry PI 2 as a thin Client. You can view the video here:

The performance is pretty impressive, you can hardly tell the difference between the two. I’m using GPUperf to measure the frames per second delivered to the endpoint and it shows up to 30FPS. Why does it perform so well on an ARM based computer that costs 35$? The key is GPU encoding and decoding.

Raspberry Pi has H.264 decoder built into the chip. Using the thinlinx OS for raspberry pi, GPU decoding is enabled by default. On server side, I have a Nvidia Grid GPU in passthrough mode, this helps the browser to perform faster with less CPU. You can read more about Browser on XenApp and GPU here: http://www.virtualexperience.no/2015/11/05/mythbusting-browser-gpu-usage-on-xenapp/

Important to notice that to get GPU optimized browser on XenApp you need to manually enable some flags in the browser. I’m using Chrome som the chrome://flags is where you enable it, and chrome://gpu is where you can see that GPU is enabled.

I got some questions about the setup so here is a quick overview:

Server side:

XenApp 7.8, Windows 2016 TP3. Running on XenServer 6.5 with Nvidia Grid K1 GPU. The VM has 4 CPU cores, 4GB ram and K1 GPU in passthrough mode. I would not recommend a K1 for production it only scales for a few users, but for testing it works ok.

Client side:

Raspberry PI 2. ThinLinx TLXOS 7.0.8 (10$ software)

I had trouble with getting the current released version 7.0.7 to work, but after a nice chat with Thinlinx support I got access to a preview of 7.0.8 version that supports PI2 and 3.

There is a good blogpost over at XenApp blog on how to get started with ThinLinx on raspberry pi

http://xenappblog.com/2015/thinlinx-on-raspberry-pi-first-impressions/

I must say I’m very impressed about the performance of RaspBerry Pi as a thin client compared to what I’ve seen on other ARM based thin clients that costs 10x the price of a raspberry Pi, and still can only produce 8-10 FPS with video. I think the experience will be even better with Raspberry PI 3, it is more powerful and it also has WiFi and Bluetooth builtin, so that you can work with Citrix X1 mouse for instance.

Running video on XenApp still consumes some CPU even when you have a GPU in there. That will hopefully get better with NVENC. What is NVENC? It is a H.264 encoder built into Nvidia GRID that remote protocols can use to offload CPU for encoding H.264 and will also give better performance. Citrix has support for NVEnc on Linux VDA and will hopefully support it on Windows VDA soon. If you are on VMWARe Horizon 7 you can use NVEnc with Blast Extreme protocol, but that is not supported on Raspberry PI yet, as far as I know. But tests with blast extreme and NVEnc shows up to 51ms lower latency on screen updates and lower CPU usage. http://blogs.vmware.com/euc/2016/02/vmware-horizon-blast-extreme-acceleration-with-nvidia-grid.html

So would you deploy Raspberry Pi as a thin client? I think for some use cases it could be very smart. You need to be aware of some limits with Raspberry PI and ThinLinx OS. Only one monitor, no smartcard, webcams, USB3 and Skype4 Business. But if you have educational users, you could probably get away with very cheap thin client, and if you spend a little extra money on GPU in the servers, you will have good scalability, and very good user experience with educational content like, browsers and video’s.

And with ThinLinx you will get central management, updates and support for you thin clients as well.

H.264 decode is something that all thin client vendors should add, it will increase performance a lot. Having thin clients that does not play video well today is not a good option, and if you have to buy a very powerful one, the price get’s close to a fat client. I think all HDX Ready thin clients should support video playback with decent performance. Adding h.264 decoding helps a lot.

 

6 thoughts on “How to get awesome video performance with XenApp and Raspberry Pi thin client

  1. Very nice, Magnar. We see similar performance. How much of the contribution would you say the preview of Windows 2016 makes, if any? Also, how many VCPUs and how much memory did you have in your VM?

    • I don’t think server 2016 has anything to do with results, but I can verify that later. I had 4cpu @3,7 GHz And 4gb ram, only one User.

  2. Thanks for the great article Magnar 🙂

    AFAIK, the Server is probably throttling the frame rate to 30fps, we see up to 60fps on our Intel TLXOS DE3815 Thin Canyon version. This is a single core CPU, the H.264 decoder is doing all the work. I think Citrix switched off the server throttling for the demos in the link below, it would be interesting to see what Frame rate the RPi3 would handle on the same network, I suspect it is higher than 30fps

    https://virtuallyvisual.wordpress.com/2015/08/02/did-i-really-see-a-165-thin-client-doing-55fps-with-borderlands-2-with-hdx-3d-pro-citrix-xendesktop/

    Regarding your comment “Only one monitor, no smartcard, webcams, USB3 and Skype4 Business” we are adding DisplayLink adapter support and and apart from USB3 support which is not supported on the RPi3 you might get a pleasant surprise in the future regarding the other things you mention above which we do not support yet in the current release.

    • My hdx policy is set to 60fps, should in theory be able to do more, not sure what is limiting the FPS.

      Thanks for commenting. Looking forward to see the new stuff.

      • Magnar, I believe th eoutput frame rate is limited by the GRID itself so that it doesn’t overwhelm the video capabilities of whatever the display is being sent to, not to mention overtax the GRID itself, since a human cannot detect anything faster than that frame rate, anyway. Even though internally I’ve seen the GRID generate over 100 FPS, the actual screen rate I’ve ever seen via a GRID I don’t believe has ever exceeded 30 FPS.

  3. The GRID actually will not throttle until 60 fps on vGPU and passthrough is, I believe, not limited. You’ve got to use 60 fps youtube videos, for example, to get >30 fps. As to a Webcam, there are USB ports that certainly can support those. As to some of the other features you mentioned …??? Time will tell — will have to see what John has up his sleeve! 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *

*