When designing your Virtualization infrastructure, one very important consideration is to the processors that you spec your ESXi hypervisors with. I find that reviewing following points help with this challenge:
- Determine cost vs performance?
- What compatibility do you need?
- Are there any specific features that you require?
Cost vs Performance
You want the best performance for the lowest cost without jeopardizing any feature sets. How can we achieve this? Luckily there is a very useful website over at https://www.cpubenchmark.net They determine a “PassMark” per CPU which grades a CPU on performance, the higher the score, the more performance you will get. Bear in mind that just because a 2.2GHz CPU has a faster clock speed than a 1.8GHz CPU, it does not make it better at performance since older technologies are less efficient etc.
CPUBenchMark also shows the latest retail cost against each CPU to assist us with cost vs performance analysis. Lets analyse the following CPUs:
All of these processors have a similar PassMark, let’s click each one and gather some important information below:
- Intel Xeon E5-2687W v2 @ 3.4GHz & 8 cores
- Intel Xeon E5-2690 v2 @ 3.0 GHz & 10 cores
- Intel Xeon E5-2670 v3 @ 2.3 GHz & 12 cores
- Intel Xeon E5-2680 v2 @ 2.8 GHz & 10 cores
Given that the all output similar performance, you would steer towards the Intel Xeon E5-2670 v3 as it is the cheapest and has the most cores which is a key requirement for virtualized workloads.
Feature wise it also ticks the right boxes; plenty of cores, fair clock speed, recent version (v3 of the E5 range), supports virtualization, hyper-threading and up to 768 GB of memory (depending on server)
Remember that you license your hypervisors based on the number of physical sockets, not cores. So my suggestion is to factor in this licensing cost per CPU. This may mean that buying more higher end CPUs becomes more cost effective to enable higher consolidation ratios without the need for additional sockets / licenses. Just keep in mind that CPUs & servers have a maximum memory capability. To take advantage of these maximums, you generally require the largest available memory DIMMS which can be more costly.
All of hosts within a cluster should be running the same generation of CPUs. This allow for features such as vMotion / DRS to work correctly. If you are mixing generations then you need to enable Enhanced vMotion Compatibility or EVC mode which artificially sets a common feature set between the CPUs which can cost you on the performance side. See here for more information regarding EVC https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1003212
We have already discussed EVC but what about highly threaded workloads that need access to many cores? In those circumstances you want to ensure that your CPUs have as many cores as you see fit. Ideally purchase servers that have multi-socket capability so that you can have multiple CPUs per host. You don’t have to populate that space socket with a CPU from build, but it gives you the option to add one later if required without having to purchase a new server. Additional CPUs will help with contention issues within ESXi’s CPU resource manager.