ESXi version 6.5
Processor Type: Intel(R) Xeon(R) CPU X5650 @ 2.67GHz
Cores per Socket: 6
Hyperthreading: Yes, enabled
There appears to be mixed views online in terms of setting the number of CPU's on a VM.
Just need to iron this out and hope someone can help on this forum.
Basically I have a VM currently setup with 4 cores and 2 sockets (8 CPU's).
Would this perform better if I had set it up with 2 cores and 4 sockets (also 8 CPU's)?
The typical processors running on this particular Windows 2016 VM is usually Word, Excel, Powerpoint, Chrome, Firefox...etc
nothing too taxing that requires Hyperthreading, however Hyperthreading is active.
Many thanks in advanced
There is no easy and fully true answer becourse you size the VM larger than your NUMA Node. The impact of violating NUMA boundaries may vary. It normaly have a greater impact for memory related workloads rather the CPU.
But to be honest... with a "office" VM you should not care because i highly doubt that you can saturate 8 vCPUs.
Over the years VMware make improvements and change the bestpractices when it comes to vCPUs and you run and very old version of ESXi.
I doubt an OS running desktop apps will ever need 8 virtual CPU cores at all - whether that's 2 sockets with 4 cores each, 4 sockets with 2 cores each, or even 8 sockets with 1 core each.
So, the starting point really should be: Allocate fewer virtual CPU cores.
Unless it's an RDSH server.
First of all, you have 2 physical CPU sockets with 6 cores for each, so you can have a VM with 6 vCPU without involving in NUMA issues (of course there are other important considerations for NUMA!), it's better this way! but if you want to have more vCPUs, from the best practices approach, you should create your VM with N sockets and 1 core per socket (for example if you want to have an 8 vCPUs VM, you should create your VM with 8 sockets and 1 core per socket) unless you have some considerations over the number of your virtual CPU sockets such as application licensing, and also you should properly size the vCPU for a VM (right sizing) and make it bigger over time if you need to, so you can start with 2 or 4 vCPUs for this specific need that you have.
Hope this could be helpful
Many Thanks for your reply.
@scott28tt yes it is a RDSH server .
We also have the another RDSH server that will also be running Office and Adobe Creative suit and was just wondering in
CPU terms would it be better to run more Cores per Sockets or more Sockets per Cores?
Does it make a difference? I'm assuming it does seeing the options are there?
The options are there mostly for software licensing - where you have applications in a VM which are licensed per-socket you would probably be better creating a VM with 2 sockets of 4 cores each rather than 8 sockets with 1 core each.
The other factor is NUMA as mentioned by others in this thread.
Some great advice taken from here https://blogs.vmware.com/performance/2017/03/virtual-machine-vcpu-and-vnuma-rightsizing-rules-of-thu... (updated July 2019)
I propose the following Rules of Thumb:
Hey, hope you are doing fine.
Let me tell you a fun thing
In my previous employer we were having tons of CPU contention issues due to over commitment and one of our proposals to fix this was to adjust vNUMA
When we went to VMware with the action plan the official response was (not the exact words): "From vSphere 6,5 and onwards the recommended setting is to leave the hypervisor determine the best placement for vNUMA unless you have a specific recomendation."
In addition to that: can you share performance information of the VM and the hypervisor?
Have you ran ESXTOP? reviewed any performance charts? any logs?
Thank you for all your responses, really appreciate it.
There are a few hints and links in here which I need to catch up reading on and as mentioned it is not as black and white when choosing the CPU options.
Although in would seem that keeping the CPU socket count lower than the cores per socket (taking OS/Software licensing into consideration) would be
an advantage over higher socket count lower cores per socket.
@nachogonzales - I've not run ESXTOP nor reviewed any performance logs just yet, but will do and will take a bit of time to compare them.
> Don’t create a VM larger than the total number of physical cores of your host
says who? old hardware had two 6-core socekts, new has only one and as you can see clearly using hypterthreading it's in fact faster
Old HW 12 Core: Requests/sec: 1777
Old HW 6 Core: Requests/sec: 1367
New HW SandyBridge 6 Core: Requests/sec: 1417
New HW Broadwell 6 Core: Requests/sec: 1677
New HW Native 6 Core: Requests/sec: 1566
New HW Native 8 Core: Requests/sec: 1844
> says who?
Says this guy -
Mark Achtemichuk currently works as a Staff Engineer within VMware’s R&D Operations and Central Services Performance team, focusing on education, benchmarking, collaterals and performance architectures. He has also held various performance focused field, specialist and technical marketing positions within VMware over the last 7 years. Mark is recognized as an industry expert and holds a VMware Certified Design Expert (VCDX#50) certification, one of less than 250 worldwide. He has worked on engagements with Fortune 50 companies, served as technical editor for many books and publications and is a sought after speaker at numerous industry events. Mark is a blogger and has been recognized as a VMware vExpert from 2013 to 2016.
Edit for clarity:
The above is an excerpt from the blog post I linked to above. The information was posted on the VMware blog by a VMware staff member who is a also a VCDX and is highly regarded in performance tuning matters. It is not a 'random paper on the internet'.
and? it depends on the workload and as you can clearly see some can benfit from SMT even within a single guest - that scales up to 10 vcores with 6 pyhscial while 12 vcores will get slower againtwhat you *really* should do is benchmarks on your workload instead just blindly follow random papers on the internet