XenApp and RDS Sizing Part 4 – Calculating the New Farm’s Capacity
This article is part of a mini-series. You can find the other articles here.
In the previous articles in this series we saw how to calculate a farm’s capacity and then how to determine its load. With that information and knowledge of our methodology we can go about calculating the capacity of the new farm, in other words doing the actual sizing. Which is dead simple, by the way.
Required Information
In order to calculate a new farm’s capacity based on usage data from an existing farm, we need to fill the fields of the following table:
Description | Farm capacity old (total) |
Farm capacity old (per user) |
Factor | Farm capacity new (per user) |
Farm capacity new (total) |
CPU [norm. cores] | |||||
Memory [MB] | |||||
Storage [IOPS] | |||||
Network [MB/s] |
Capacity Old Farm
We’ll start by entering the capacity numbers determined in part 2:
Description | Farm capacity old (total) |
Farm capacity old (per user) |
Factor | Farm capacity new (per user) |
Farm capacity new (total) |
CPU [norm. cores] | 174.2 | 0.7 | |||
Memory [MB] | 60,894 | 244 | |||
Storage [IOPS] | 4,370 | 18 | |||
Network [MB/s] | 2,300 | 9.2 |
Scale Factor
Next we’ll take the load results determined in part 3 and set a scale factor. The scale factor governs how much more we need of a component per user in the new farm.
Additional Factors Influencing Load
At this point you need to consider additional changes between the old and new environment that are relevant to capacity, e.g.:
- higher RAM requirements because of the move to 64-bit software
- RAM requirements generally increasing with each new software generation
- CPU and RAM overhead incurred through virtualization technologies like App-V or Personal vDisk
Setting the Scale Factor
We now set the scale factor for the new environment:
Component | Load old farm | Scale factor |
CPU | light | 0.5 |
Memory | high | 3.0 |
Storage | medium | 1.5 |
Network | minimal | 0.1 |
With the scale factor known, the capacity calculation table looks like this:
Description | Farm capacity old (total) |
Farm capacity old (per user) |
Factor | Farm capacity new (per user) |
Farm capacity new (total) |
CPU [norm. cores] | 174.2 | 0.7 | 0.5 | ||
Memory [MB] | 60,894 | 244 | 3.0 | ||
Storage [IOPS] | 4,370 | 18 | 1.5 | ||
Network [MB/s] | 2,300 | 9.2 | 0.1 |
Result: Capacity of the New Farm
Per User Capacity
By multiplying the old farm’s capacity values with the scale factor we get the new farm’s per user capacity:
Description | Farm capacity old (total) |
Farm capacity old (per user) |
Factor | Farm capacity new (per user) |
Farm capacity new (total) |
CPU [norm. cores] | 174.2 | 0.7 | 0.5 | 0.35 | |
Memory [MB] | 60,894 | 244 | 3.0 | 732 | |
Storage [IOPS] | 4,370 | 18 | 1.5 | 27 | |
Network [MB/s] | 2,300 | 9.2 | 0.1 | 0.92 |
Total Capacity
The number of users using the environment might be different between the old and the new farm. That is the reason why we broke the calculation down to per-user values. Now we only need to multiple the per-user capacity values with the new farm’s planned user count to get the total capacity. Assuming an increase in CCUs from 250 to 350 we get these values:
Description | Farm capacity old (total) |
Farm capacity old (per user) |
Factor | Farm capacity new (per user) |
Farm capacity new (total) |
CPU [norm. cores] | 174.2 | 0.7 | 0.5 | 0.35 | 122.5 |
Memory [MB] | 60,894 | 244 | 3.0 | 732 | 256,200 |
Storage [IOPS] | 4,370 | 18 | 1.5 | 27 | 9,450 |
Network [MB/s] | 2,300 | 9.2 | 0.1 | 0.92 | 322 |
What to Buy
CPU
Before we can go and buy servers we need to convert the resulting normalized CPU cores to actual physical cores. Using Moore’s Law as discussed in part 2 we can calculate the performance index of a modern CPU like the Xeon E5-2670 CPUs as follows:
Difference between release dates of oldest CPU Xeon 7100 and Xeon E5-2670: 67 months
Performance index of Xeon E5-2670 = e ^ (0.033 * 67) * 2 = 18.26
(we multiply by 2 because we set the perf index of the oldest CPU to 2, not 1, so that its index per core would be 1)
Performance index of Xeon E5-2670 per core = 18.26 / 8 = 2.3
So each core in a modern Xeon CPU is roughly 2.3 times faster than its 2006 ancestor.
We need: 122.5 normalized cores = 53.3 Xeon E5-2670 cores = 6.7 Xeon E5-2670 CPUs = 3 or 4 dual processor servers
Memory
256 GB RAM in 3-4 servers is not much by today’s standards. I would go for something in the area of 128 GB per system.
Storage
The storage subsystem must be able to constantly deliver nearly 10,000 IOPS. That is quite a lot. It can be achieved either by connecting the machines to a SAN (expensive) or by going for local SSDs. Another option would be 12-16 local 15K drives in a RAID-10 configuration supplemented by an IO optimization tool like Atlantis Ilio.
Network
The NICs must be capable of transferring 322 MB/s. That is roughly the capacity of 3 Gigabit NICs. Since we need 3-4 servers anyway, we already have got those 3 NICs.
Conclusion – and Spreadsheet
I hope you liked this series. To help with the calculations I have created a spreadsheet: Helge Klein – Farm sizing.xlsx.
Have fun sizing!