Avatar of cmatchett
Flag for United Kingdom of Great Britain and Northern Ireland asked on

vmware 1:1 processor mapping virtual to physical cores

If i have 2 physical processors with 4 cores each and to maintain a 1:1 mapping between virtual to physical cores, i cannot give more than 8 cpus in total to all virtual machines?

In this environment, there is an exchange vm that is running on the above physical core specification.  In total, there are 22 vpus to assigned to all the virtual machines running on this host.

I know that vmware / hyper-v best practice for exchange is 1:1.  I was told today that the exchange virtual machine is running on a one-to-one mapping.

The other thing is that hyper-threading is enabled on the physical host giving it 16 cores.  I understand that virtual to physical core mapping isn't based on hyper-threaded cores but actual physical cores.

how is this possible that the exchange vm is running on 1:1

Avatar of undefined
Last Comment
Andrew Hancock (VMware vExpert PRO / EE Fellow/British Beekeeper)

8/22/2022 - Mon
Andrew Hancock (VMware vExpert PRO / EE Fellow/British Beekeeper)

In simple terms, we like to state that a single virtual cpu in the virtual machine = (equals) a single core on the physical processor.

but in reality, this could be on different cores, throughout the execution of the Virtual Machine, as the scheduler maintains, and moves workloads across ALL cores available on the hosts processors.

We work on a rule of thumb of  5-6 Virtual Machines per physical core in the server.

So Dual Processor Quad Core Servers, handle approx 40 VMs. (single vCPU and dual vCPU sockets).

So I would have to investigate the 1:1 mapping statement, and try to dig further what this means, unless they have changed the affinity settings on the CPU, to lock each vCPU to a specific core, which we do not generally do, and we leave the hypervsor (that's why we pay money to VMware), to do the donkey work, of shuffling resources.

if i go technet..

Exchange supports a virtual processor-to-logical processor ratio no greater than 2:1, although we recommend a ratio of 1:1. For example, a dual processor system using quad core processors contains a total of 8 logical processors in the host system. On a system with this configuration, don't allocate more than a total of 16 virtual processors to all guest virtual machines combined.
Andrew Hancock (VMware vExpert PRO / EE Fellow/British Beekeeper)

Well as in my example above we allocated 5-6 VMs per core, that's 40 VMs, on 16 virtual processors, time sliced working well, and we have many more VMs per server now with Hadoop, and many worker nodes.

I supose the article is describing over allocation of compute resources, there are some servers, that have high CPU utilisation, e.g. Terminal Services, VDI, Citrix etc where you would expect CPU to be greater than 90%, and therefore, would need a 1:1 mapping, and hence you would scale your servers accordingly.

But, there's not really any OS/Exchange configuration for it, unless you change the CPU Affinity settings, so you then lock a virtual socket to a core on the physical processor.

It's more of a design, do not over subscribe CPU resources.

e.g. in my example, do not also put Exchange Server VM, on a Host, which is already hosting 40 VMs!
I started with Experts Exchange in 2004 and it's been a mainstay of my professional computing life since. It helped me launch a career as a programmer / Oracle data analyst
William Peck

from the vmware exchange 2013 best practices

Although Microsoft supports a maximum virtual CPU to physical CPU overcommitment
ratio of 2:1, the recommended practice is to keep this as close to 1:1 as possible. For example,

in the case of an ESXi host with eight physical cores, the total number of vCPUs across all Exchange virtual machines on that host should not exceed eight vCPUs. After hyperthreading is enabled on the ESXi host, the hypervisor has 16 logical processors where it can schedule worlds to run.  

Is the above paragraph assuming that the host is only dedicated to exchange ?

hyper-threading should be disabled because of the .net managed code.  where each database runs in its own store process..
Andrew Hancock (VMware vExpert PRO / EE Fellow/British Beekeeper)

I believe that's normal, that you would not allocate more virtual sockets, than total cores on the physical host.

e.g. 8 vCPUs

I do not think VMware, can expect us to just host Exchange on it's own VMware Hypervisor, that increases costs, not reduces them, it would be better off, on it's own physical hardwar with no hypervisor license.

apparently now that advice is to install the exchange 2013 mailbox role on a physical server, due to resource demands.

So this paragraph..

"in the case of an ESXi host with eight physical cores, the total number of vCPUs across all Exchange virtual machines on that host should not exceed eight vCPU"

Is it really saying that the vcpus assigned to all virtual machines running on the host shouldn't exceed the total number of physical cores?  This would be consistent with technet.
Get an unlimited membership to EE for less than $4 a week.
Unlimited question asking, solutions, articles and more.
Andrew Hancock (VMware vExpert PRO / EE Fellow/British Beekeeper)

Log in or sign up to see answer
Become an EE member today7-DAY FREE TRIAL
Members can start a 7-Day Free trial then enjoy unlimited access to the platform
Sign up - Free for 7 days
Learn why we charge membership fees
We get it - no one likes a content blocker. Take one extra minute and find out why we block content.
Not exactly the question you had in mind?
Sign up for an EE membership and get your own personalized solution. With an EE membership, you can ask unlimited troubleshooting, research, or opinion questions.
ask a question

Hi,  I found this white paper about cpu ready time.  what do you calculate the cpu ready as of the vm in the uploaded imagecpu ready

taken from the pdf...

to convert this to a percentage value, you have to take what is reported (2173 ms) and divide by 20 seconds (20000 ms) to arrive at a CPU Ready value as a %. In the case
of this graph, 2173/20000 = 0.10865, or 10.865%, which is twice the 5% guideline

it says in the pdf..

To check how much CPU Ready is being experienced in your environment, it’s most effective if you look at CPU Ready on a per-vCPU basis,

calculating the CPU ready then for each of the 4 vcpus, i calculate it to be above the recommended level

i have found the below.  If i wanted to go back to particular day, what value would i use

The formula requires you to know the default update intervals for the performance charts. These are the default update intervals for each chart:

Realtime: 20 seconds
Past Day: 5 minutes (300 seconds)
Past Week: 30 minutes (1800 seconds)
Past Month: 2 hours (7200 seconds)
Past Year: 1 day (86400 seconds)
CPU ready %

To calculate the CPU ready % from the CPU ready summation value, use this formula:

(CPU summation value / (<chart default update interval in seconds> * 1000)) * 100 = CPU ready %
Your help has saved me hundreds of hours of internet surfing.

if i wanted to use the value of 300 and use a custom value, i would have to specify the dates as

23/04/2014 09:00 - 24/04/2014 09:00

is that correct?
Andrew Hancock (VMware vExpert PRO / EE Fellow/British Beekeeper)

Your question has gone off-topic, about CPU Ready times and performance.

If the answers to this question have been helpful, please assign points, and please post a new question for myself or other Experts to answer.