Mythbusting Browser GPU usage on XenApp

 

We all know that browsers a quite resource intensive both on CPU and Memory. The question is, will a GPU help saving CPU resources in a XenApp or XenDesktop environment, and will the user experience be better? Together with Thomas Poppelgaard we have done some testing to verify this, and here is our results.

What did we test?

 

We focused on four browsers running on XenApp 7.6 on Windows 2012R2, running on Xenserver 6.5 SP1 with Nvidia GRID K1 passthrough. The browsers where:

We presented these results on a CUG Norway conference, and we asked the 120 people in the audience which browser people were using on XenApp. Most of them answered IE, a few Chrome and Firefox and none using Opera.

We wanted to see how different content types affected the CPU and GPU usage, so we tested four scenarios:

How did we perform the test and measure it

To be able to compare the results we have to run the exact same workload for the same amount of time with a GPU present and without GPU present. To do this I created a special edition of GPUPerf that can record average data for 1 minute and export the telemetry data for analysis, we used an excel spreadsheet for this. Some of the workloads were running automatically, but the web scrolling were manually, so there may be some lurking variables in this test. Also remember that GPUPerf is reporting all CPU and GPU on a machine, so running just one application was important to limit the impact of system resources consumed by other applications. Remember that some CPU will be used by ICA protocol itself on top of the application. A sample of one minute is also very little, but it gives a hint of the difference with and without GPU. We ran each workload on each application both with and without GPU. I was just shutting down the VM and removed the GPU between the tests.

By doing this, we could compare how much average CPU consumed in one minute with and without GPU. But there is more. GPUPerf is reading the ICA FPS (frames per second) counter. This indicates how many frames was delivered to the endpoint. On a moving image, like video, 3d animation and scrolling, this should be close to 30 FPS for a smooth experience. So I figured this will give an indication if the user experience would be better with a GPU. For instance, without GPU, IE would only give 12FPS on webscrolling, giving a really poor experience, but with GPU we got closer to 30FPS, a much smoother experience.

How to get browsers to use GPU on XenApp

For VDI, this is nothing you have to worry about, browsers will use GPU by default. But for XenApp, browsers are blocking GPU usage. Here is a list of links on how to work around this:

In our test we discovered that IE was not using GPU for WebGL and web scrolling, I’ve not been able to figure out why.

The results

Our conclusions

In general, with an exception of Youtube, you CAN save a lot of CPU on browser usage by adding a GPU to your XenApp server. The user experience will also be better. There is a difference from browser to browser on how much CPU you can save. It also depends a lot on the content you are consuming, but you have little control over what a user will do with a browser. As long as they have a browser and access to internet, they can use anything they want. To me, that means that publishing a Desktop (with a browser) or a published browser to your users you should consider providing a GPU to the solution. I also believe that in the future, we will see more servers coming with integrated GPU’s, making it easier and more affordable to implement. But can we run without GPU? Yes, but make sure you have a lot of CPU available, and expect you user density to be lower than with GPU. I’ve seen a case where 4 users on each virtual XenApp sever was the limit, because browser took 25% CPU on each user.

So the question is, will you next virtualization project include GPU?

2 thoughts on “Mythbusting Browser GPU usage on XenApp

    • I’ve not been able to verify this, but I belive that the HDX encoding engine is using a lot of CPU to encode the video stream. Will have to run the tests again some other day to verify.

Leave a Reply

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

*