1

I just ran the Exchange Health Checker script for something unrelated to CPUs, and I noticed at the top of the output in Exchange Management Shell it says:

Virtual Machine detected. Certain settings about the host hardware cannot be detected from the virtual machine. Verify on the VM Host that:

  • There is no more than a 1:1 Physical Core to Virtual CPU ratio (no oversubscribing)
  • If Hyper-Threading is enabled do NOT count Hyper-Threaded cores as physical cores
  • Do not oversubscribe memory or use dynamic memory allocation

Although Exchange technically supports up to a 2:1 physical core to vCPU ratio, a 1:1 ratio is strongly recommended for performance reasons. Certain third party Hyper-Visors such as VMWare have their own guidance.

VMWare recommends a 1:1 ratio. Their guidance can be found at https://aka.ms/HC-VMwareBP2019

Related specifically to VMWare, if you notice you are experiencing packet loss on your VMXNET3 adapter, you may want to review the following article from VMWare: https://aka.ms/HC-VMwareLostPackets.

For further details, please review the virtualization recommendations on Microsoft Docs here: https://aka.ms/HC-Virtualization.

Our ESXi 8.0 U2 server has one Intel CPU with 6 physical cores, 12 threads.

Exchange is probably the most important VM on this server, so we had set it to be able to use all of these cores, like this:

We only allocate max CPUs for this one VM - our other VMs are allocated much less CPUs.

VMware's Exchange best practices PDF linked in the script's output above is very detailed, and it talks about CPUs on pages 7-12.

If I understand it correctly, is it saying that for Exchange 2019, you can use any number of cores - as long as the number of sockets is not more than 2, and that Hyperthreading is ok to be enabled nowadays (where it wasn't before)?

Is our CPU configuration shown in the screenshot above okay?

Is the recommended socket count 1 or 2?

Any other recommendations please?

2 Answers2

3
  1. The ratio of physical cores to virtual CPUs should ideally be 1:1, meaning no oversubscription. This helps to ensure that virtual machine performance does not suffer due to resource contention.

  2. If hyperthreading is enabled, hyperthreaded cores should not be counted as physical cores. Hyperthreading can increase throughput, but they should not be counted against the kernel quota because they do not provide the same computational power as physical kernels.

  3. should not oversubscribe memory or use dynamic memory allocation. This helps ensure that Exchange Server has sufficient memory resources to maintain its performance and stability.

0

Do you have any performance issue? This is my recommendation, what I have implemented:

Disable CPU Hot Add (and for memory hot add also)

With VM version 20 and up, CPU Topology - Assigned at power on. I still don't use this option, currently is set 8 cores , 1 socket

Disable Hyper-Threading (by Exchange Health Checker)

Reserve all guest memory :)

Power Plan - High Performance

Exchange Health Checker is pretty nice, new versions are coming often. Always use the latest one.