Citrix: Edgesight for loadtesting best practices
I’ve been involved with quite a few Citrix XenApp/XenDesktop projects and a reoccurring phase in all of these projects is scaling/load testing. When starting a project there’s a initial phase where you try to give an answer to all of the questions concerning scalability and sizing. So I’ve build a load test a couple of times now, the problem with these load tests is that no load test is equal to another. Every company has it’s own applications, settings and user types thus these load tests are custom made and can be re-used only partly for other customers.
Citrix offers EdgeSight for loadtesting when you buy the right Citrix XenApp licenses (See “load testing services”):
At one of my recent projects I had to write a load testing script containing an ‘average user’ with ‘average applications’. My first problem was to define what an average user is for this organization. The second problem was to define what the average applications where for this average user. To tackle this problem I had a couple of meetings with key users (which normally aren’t average users btw), application admins and the sys admins. That’s when I created a matrix of users and their generated workload based on the outcome of these meetings. The applications where fairly easy to determine, the core applications for the different users where chosen and based on input of users and sys admins we decided to use that certain applications.
The start of the project was to determine what to test and the user type (work load). After this we should determine what we want to measure. In a best practices document for XenDesktop I found the following parameters:
|Logical Disk||% Disk Time, % Free Space|
|Memory||Available Bytes, Pages Input/sec, Pages Output/sec|
|Paging File||% Usage|
|Physical Disk||Current Disk Queue Length|
|Processor||% Interrupt Time, % Processor Time|
|System||Context Switches, Processor Queue Length|
|Terminal Services||Active Sessions|
|Network Interface||Bytes Sent/sec, Bytes Sent/sec|
|Process||Stream Process1, Stream Service1, CdsController2, CdsPoolMgr2|
1 Provisioning Server Process
2 Desktop Delivery Controller Process
Is this what you need to monitor for your own environment? It depends, it covers a great deal of the most important parameters but you’ll still need to fine tune your own dataset and need to analyze the outcome.
So the most important things you’ll need to know when defining a load test:
- What applications do I want to test?
- At what load should these applications be tested?
- What parameters do I need to analyze?
A couple of tips while writing the load tests:
- Make sure you have a description of the steps you want to test. Create manuals for user actions so you can reproduce the load test and are able to show what you’ve tested, even after a couple of years (create a baseline).
- Define the load, create different load ‘profiles’ for the different types of users.
- Install Operating System Updates and make sure driver installations are finished.
- Ensure that any environment-specific changes are made to the golden image at the start. Disk cache optimizations, memory usage limitations and firewall settings are just a few examples. Also ensure that local and domain policies will work as-planned.
- Tackle First-Time User Log Ons so that the load test will be completed successfully.
- Build your load test fool proof, use the windows shortcut keys as much as possible. Make sure timing is right!
- When recording the load test Edgesight will record the name of the screens, make sure these are anonymous otherwise the script will fail while checking the screen names and expecting another value.
- Make sure that all of the users used for the test can access the applications and run the processes defined to that user type.
This will probably can be used on all types of load testing so you can use it while preparing for any load testing software and if you’ve got additional comments on preparing for , and conducting load testing please let me know and I will add them!