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
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.
Hello Great thinks a lot
Nice explanation on Cluster sizing…
If you have any article similar for VM sizing and if you can share that would be great help.
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
Your cluster is constrained by CPU and therefore you need to meet the requirements by providing 20 hosts before any failures.
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
http://vmware-sizing.vnshell.net/ => web GUI
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.
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.
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
Number of concurrent VM is 50. Where is the value(50) from?