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:
— Magnar Johnsen (@MagnarJohnsen) April 11, 2016
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:
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.
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
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.