by: Helge, published: Jan 9, 2013, updated: Mar 8, 2013, in

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!

Previous Article Conferences 2012 and Beyond
Next Article How to Determine the Size of the System Volume Information Directory