Being an architect in the desktop virtualization space, I get a lot of questions around scalability. I’m not a big fan of scalability questions because there is too much SWAG involved. Unfortunately, I’ve been getting them for over 10 years: first with XenApp (which was WinFrame 1.7) and now with XenDesktop. As an example, I can easily get hundreds of users on a single XenApp server if the users are only running Notepad and I can easily get 150+ virtual desktops on a hypervisor if the users are idle and using a minimal amount of CPU/RAM. But is this realistic?
The SWAG in scalability responses focus around a few core concepts:
- User activity
- Underlying hardware
- Resource allocation
First, user activity. Users are not the same. I’ve typically found it worthwhile to categorize users into four distinct groups:
- Light: 1-2 apps.
- Normal: 3-6 apps simultaneously
- Power: 7+ applications simultaneously while invoking more advanced features
- Extreme: 10+ applications with unique hardware level requirements and complete customization. These users typically fall into our Local Stream Desktop or Hosted Blade PC category of FlexCast.
You should be able to see that as you move up the categories, the user will require more RAM and more processing power. This brings us to our second scalability area of focus: Hardware. There isn’t much to talk about except that typically a larger server should support more users. Pretty easy, although in most cases you will reach a point where the extra hardware does not scale linearly because other bottlenecks within the hardware layer are reached (CPU, Memory, IO, bus, etc).
You now need to determine what impact the user group will have on the underlying hardware, and this is based on the user group, the operating system and the applications. Unless you are going for the massive servers (24 cores+), you really only need to concern yourself with processor and memory consumption. Because your mileage will vary this is where you need to calculate what percentage of the physical server will each user type consume. Once you’ve done this, your almost done.
The final aspect is resource allocation. There is a lot of debate about over-allocating memory resources (you know where I stand on over allocation) but what about over-allocation of the CPU? There is some SWAG here in that you have to estimate what percentage of your users will be active at any one point. If you are a XenApp administrator, you probably realize that about 40%-60% of your users are idle at any given time. I wouldn’t feel comfortable using that same percentage on the virtual desktop side of things. In XenApp, users are working with 1 application at a time. They oftentimes go back to their physical desktop to do other things, which makes their XenApp session appear idle. But if we have the entire desktop virtualized, the user doesn’t have a non-hosted desktop to go back to. So your user idle percentages should be much smaller, around 20%-30% (remember, reading an email, reading a doc, attending a meeting makes it look like you are idle).
When I’m trying to determine my virtual desktop specs, these are the things I look into, what about you?