vSphere Sizing Formula – CPU & RAM

This is a blog post I have been meaning to do for a while, essentially the purpose behind it is for me to share the methodology I use for sizing the requirements for a physical ESXi host design.
I’m sure you know the information in this post isn’t exactly new, it is based from my own experiences and reading of a number of materials which includes:

VMware vSphere Design
 – Forbes Guthrie & Scott Lowe
Managing & Optimizing VMware vSphere Deployments – Sean Crookston & Harley Stagner
Designing VMware Infrastructure – Scott Lowe

Step 1 – Data Collection
This is obtaining the key metrics from your physical systems.  You might get this data manually using perfmon or using tools such as VMware Capacity Planner.
 
One thing to be wary of, is if you have a system with 100% utilization then you don’t always know what extra resources might be required.  For RAM it isn’t so bad as you can take into account paging, however with CPU, you have to make a judgement call.
 
CPU Data Collection
 
Average CPU per physical (MHz) x Average CPU Count = Average CPU per physical system
 
2,000MHz x 4 = 8,000MHz
 
Average CPU per physical system x Average peak CPU utilization (percentage) = Average peak CPU utilization (MHz)
 
8,000MHz x 12% = 960Mhz
 
Average peak CPU utilization (MHz) x Number of concurrent VM’s = Total peak CPU utilization (MHz)
 
960MHz x 50 = 48,000MHz
 
RAM Data Collection
 
Average RAM per physical (MB) x Average Peak RAM utilization (percentage) = Average peak RAM utilization (MB)
 
4,000MB x 52% = 2080MB
 
Average peak RAM utilization (MB) x Number of concurrent VM’s = Total peak RAM utilization (MB)
 
2080MB x 50 = 104,000MB
 
Step 2 – Target Host Specification
These are your target systems, remember to think about items such as server build limitations e.g. 2 Sockets with 6 Cores with Blades, DIMM slots and other factors such as license requirements or physical space which is available.
I also try and factor in maximum capacity at this point, some people like to call this head room or growth.
 
Host CPU Specification
 
CPU sockets per host x Cores per socket = Cores per host
 
2 x 6 =12
 
Cores per host x MHz per core = MHz per host
 
12 x 2,000MHz = 24,000MHz
 
MHz per host x Maximum CPU utilization per host (percentage) = CPU available per host
 
24,000MHz x 80% = 19,200MHz
 
Host RAM Specification
 
RAM per host x Maximum RAM utilization per host (percentage) = RAM available per host
 
80,000MB x 70% = 56,000MB
 
Step 3 – Number of Hosts
Based around the above details, we can now work out the number of hosts required to meet our needs for CPU, RAM and redundancy.

Hosts Per CPU Specification

Total peak CPU utilization (MHz) / CPU (MHz) per host = Number of hosts required for CPU
 
48,000MHz / 19,200MHz = 2.5 (round up) 3 Hosts
 
Number of hosts required for CPU + redundancy = Number of hosts for N+?
 
3 + 1 = 4
 
Hosts Per RAM Specification
 
Total peak RAM utilization (MB) / RAM (MB) per host = Number of hosts required for RAM
 
104,000MB / 56,000MB = 1.8 (round up) 2 Hosts
 
Number of hosts required for RAM + redundancy = Number of hosts for N+?
 
2 + 1 = 3
 
Tables
Depending on how you prefer to present or calculate out your solutions, you might prefer to work with tables.
 
Table to Show CPU & RAM Requirements 

Performance Metric

Recorded Value
Average number of CPU per physical system 4
Average CPU MHz 2,000 MHz
Average CPU Utilization per physical system 12% (960MHz)
Number of concurrent virtual machines 50

Total CPU resources for all virtual machines at peak

48,000MHz
Average amount of RAM per physical system 4,000MB
Average peak memory utilization per physical system 52% (2,080MB)
Number of concurrent virtual machines 50

Total RAM resrouces for all virtual machines at peak

104,000MB
  
Table to Show Host CPU & RAM Specification 

Attribute

Specification
CPUs sockets per host 2
Cores per CPU 6
MHz per CPU core 2,000MHz

Total CPU MHz per host

24,000MHz
Maximum CPU utilization per host (growth) 80%

CPU available per host

19,2000MHz
RAM per host 80,000MB
Maximum RAM utilization per host (growth) 70%

RAM available per host

56,000MB
 
Table to Show Hosts Per CPU & RAM Specification 

Attribute

Specification
Total peak CPU utilization 48,000MHz
CPU available per host 19,200MHz
Hosts required for CPU (round up) 3
Redundancy 1

Number of hosts for CPU & redundancy

4
Total peak RAM utilization 104,000MB
RAM available per host 56,000MB
Hosts required for RAM (round up) 2
Redundancy 1

Number of hosts for RAM & redundancy

3

Note: I haven’t included TPS savings as these will negate memory overhead for CPU.

11 thoughts on “vSphere Sizing Formula – CPU & RAM

  1. Nice explanation on Cluster sizing…
    If you have any article similar for VM sizing and if you can share that would be great help.

  2. Here i see different size information for CPU (4) and RAM(3) results, in that case which one should be go for. Should be always go for the maximum? in the above example, the difference in marginal between and CPU and RAM, it does not make up a big difference, whereas in my planning calculation the CPU results to 20 hosts and RAM endup with 6hosts, in that case how this will work? can you please help? Thanks in advance

    1. Your cluster is constrained by CPU and therefore you need to meet the requirements by providing 20 hosts before any failures.

  3. Hi i have requirement my Esxi server has 2Socket and 8 cores per socket what will be the Max VM i can host if zero memory overcommite and cpu overcommite is 4:1 it has RAM of 256 GB where as CPU is 2500MHZ ? VM will be 4vCpu and 8 GB ram

  4. In Data Collection section, are you referring to 4 cpu sockets and not taking core count into consideration? Later in target selection you use cores. Just trying to understand if in data collection avg cpu count (4) is referring to 4 cpu sockets and not caring about how many cores/socket.

    1. Hi Ian in relation to CPU Data Collection:
       
      Average CPU per physical (MHz) x Average CPU Count = Average CPU per physical system
       
      2,000MHz x 4 = 8,000MHz

      This means a single socket processor with 4 x CPU cores. Hope that makes sense.
       

  5. Good article but you don’t need to calculate the total CPU & RAM figures i.e.:

    No. of VMs per Host = ROUNDDOWN(CPU (MHz) per host / Average peak CPU utilization (MHz))

    No. of Hosts = ROUNDUP(Number of concurrent VMs / No. of VMs per Host)

    Add 1 if N+1 is required

    RAM (MB) per host = No. of VMs per Host x Average peak RAM utilization (MB)

    Doing it this way means you don’t get scenarios like above where host count for CPU & RAM differ and you allocate the wrong amount of RAM. For your example numbers (if I read them correctly), 19,200MHz/960MHz = 20 VMs per host (3 or 4 hosts required) each with 20 x 2080MB = 41600MB RAM

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s