VMware Cloud Community
cstrull
Contributor
Contributor
Jump to solution

VM Server running on a Quad Core Box

I have a question about how Virtual Servers "see" quad core processors.

For example, if I run Windows 2003 on an HP DL 360 with a single quad core processor, I wil actually "see" 4 processors listed under device manager and 4 processors showing in task manager.

I have the same hardware, running a 2003 R2 virtual server. Under device manager, the processor is just showing a single e5335 processor (which is a quad core processor). Task manager also just shows a single processor.

My question is this: Is the Virtual Server actually using all 4 cores of the processor? or is it only using a single core? Is it just that it doesn't display it as the same with a Virtual environment? Is performance less as a VM server vs. a physical server?

Any insight would be greatly appreciated.

Thanks.

0 Kudos
1 Solution

Accepted Solutions
RParker
Immortal
Immortal
Jump to solution

Ah well, SQL depends on the application. SQL is not an application and no where does it ever show that SQL NEEDS a Quad Core or multi core for that matter. Maybe the application he wrote (as you suspect) NEEDS 4 cores because he doesn't understand multi-threading, instead he is throwing additional hardware at the problem hoping to overcome his need for greed.

Now, for your purpose if you edit settings in the VM under CPU it will show 1, 2 or 4. That number represents the number of cores, but for a VM the OS sees these as processors. 1 vCPU (or core) is 1 Processor in a guest. In this case SQL if it's 1 vCPU/Core it's 1 Processor. If the application needs 4 processor (1 Quad Core processor equivalent) then you need to make this VM a 4 vCPU (4 core) / 4 processor VM.

Then this requires you shut off the VM, change the setting, and then power it up for the OS to change, but this is plug and play, and Windows should recognize the multiprocessor upon booting, you can verify this by right clicking the my computer icon, and click properties device manager, go to CPU and verify it shows multi processor. You may need to reboot for the changes to take affect.

Then you now have a 4 core VM. Each core is a single processor despite how many sockets/cores/processors your ESX server has, a VM can ONLY see what you give it, in this case 1, 2 or 4 processors at a time. These are individual cores.

View solution in original post

0 Kudos
15 Replies
RParker
Immortal
Immortal
Jump to solution

Windows sees ALL the cores. Task manager by default is showing an aggregrate of the cores, you need to select "1 process per CPU" setting in task manager, then you can see all the processors.

Windows sees the processors but it's a chip set, and that chip set determines the type of cores involved, they are all there under device manager.

A VM can only see 1 processor. It's not a socket, its an actual processor. So if you assign 1 vCPU to a VM, that's all you get. If you use 2 vCPU you will see 2 processors, and so on.

0 Kudos
cstrull
Contributor
Contributor
Jump to solution

Thanks for the quick response.

What I'm wondering, is this. If the virtual server sees the e5335 process as a single processor, is it utilizing all 4 cores? or, are you saying, that I need to add 4 additional processors to my VM to see them all?

Thanks again.

0 Kudos
Neth66
Enthusiast
Enthusiast
Jump to solution

The VM will only see one core at a time. If you need a 4 CPU VM, you better put it on a host that has at least 8 cores. The scheduler requires that the number of CPUs in the VM are free before it gives the VM any CPUs. If you try to run a 4 CPU VM on a 4 CPU host, you'll see the VM spends a lot of time waiting for CPUs.

0 Kudos
RParker
Immortal
Immortal
Jump to solution

> or, are you saying, that I need to add 4 additional processors to my VM to see them all?

Yes, that's correct, but don't go crazy with adding VM CPU's, they aren't usually needed. I would test a VM with 1 CPU first. Then run esxtop on a ESX host where that VM is running. If the %ready is not very high < 5% you don't need the additional CPU. run a load on that VM to push the CPU, and you can see the ready state. If it's not getting higher ready states, you don't need the additional CPU's you are wasting scheduling time and CPU's.

0 Kudos
mcowger
Immortal
Immortal
Jump to solution

How many vCPUs are assigned to this VM? If it is 1, then you will use only 1 core for your VM. If its 4, then you will use 4.

--Matt

--Matt VCDX #52 blog.cowger.us
0 Kudos
fgl
Enthusiast
Enthusiast
Jump to solution

You only need 1 license per physical CPU so I your case you only need 1.

I have DL360's with 2 Quad Core processors, VM sees it as 2 physical processors and 8 logical processors. I only needed 2 VM license for each of my DL360's.

0 Kudos
cstrull
Contributor
Contributor
Jump to solution

This environment is about as basic as it can get.

I have a SQL server running as a VM. It is the only VM running on this HP DL 360. The DL 360 has dual Quad Core processors. No other VMs are running other than this SQL server.

The vendor they use is blaming application performance on lack of hardware. They are saying that SQL should be running on a quad core processor. Since this SQL server is the only VM running on this host, is it running as a quad core server? Is it just that VMWare only sees the physical processor (one)? and not the logical processors (four)?

I appoligize for any confusion. I just want to prove the vendor wrong who is claiming that the SQL server is under powered, and not blaming his poorly written code.

Thanks.

0 Kudos
mcowger
Immortal
Immortal
Jump to solution

Need to know how many CPU's are assigned still.

On the summary tab, you'll see something like what I've attached. See where it says 4 vCPUs? How many do you have. Thats how many your Windows VM is seeing/using. Ignore cores/packages, etc. As far as your VMs are concerned, 1CPU = 1 core, end of story. If you have 8 total cores in your host @ 3.0GHz, and you assigned 1 vCPU, your VM has access to 3.0GHz of computing power. With 2 vCPUs, thats 6.0GHz, etc.

--Matt

--Matt VCDX #52 blog.cowger.us
0 Kudos
RParker
Immortal
Immortal
Jump to solution

Ah well, SQL depends on the application. SQL is not an application and no where does it ever show that SQL NEEDS a Quad Core or multi core for that matter. Maybe the application he wrote (as you suspect) NEEDS 4 cores because he doesn't understand multi-threading, instead he is throwing additional hardware at the problem hoping to overcome his need for greed.

Now, for your purpose if you edit settings in the VM under CPU it will show 1, 2 or 4. That number represents the number of cores, but for a VM the OS sees these as processors. 1 vCPU (or core) is 1 Processor in a guest. In this case SQL if it's 1 vCPU/Core it's 1 Processor. If the application needs 4 processor (1 Quad Core processor equivalent) then you need to make this VM a 4 vCPU (4 core) / 4 processor VM.

Then this requires you shut off the VM, change the setting, and then power it up for the OS to change, but this is plug and play, and Windows should recognize the multiprocessor upon booting, you can verify this by right clicking the my computer icon, and click properties device manager, go to CPU and verify it shows multi processor. You may need to reboot for the changes to take affect.

Then you now have a 4 core VM. Each core is a single processor despite how many sockets/cores/processors your ESX server has, a VM can ONLY see what you give it, in this case 1, 2 or 4 processors at a time. These are individual cores.

0 Kudos
cstrull
Contributor
Contributor
Jump to solution

I checked my settings on my VM and it only shows 1 vCPU.

My question is, then, if I stop the VM and add in the additional CPU, how many CPUs will it allow me to add? Does VMWare know, if it's a quad core, I can add up to 4 processors? Also, there is a warning about adding additional CPUs after Guest OS is loaded can cause instability....is this a concern? or is that for non-plug & play OSes?

Will Windows 2003 auto detect an additional CPU?

Thanks again to everyone for all of their help. You all have helped me out a great deal.

0 Kudos
cstrull
Contributor
Contributor
Jump to solution

I was able to succesfully upgrade the CPU from 1 to 4. However, the most I was able to do was 4. The host server has dual Quad Core processors in it. Is one of the processors reserved for the Host?

Thanks again to everyone for their help with this.

0 Kudos
cstrull
Contributor
Contributor
Jump to solution

The VM is now showing 4 CPUs...however, 4 was the max I could add. With the host have dual Quad-Cores, wouldn't 8 be the max?

Just curious.

0 Kudos
Neth66
Enthusiast
Enthusiast
Jump to solution

With ESX 3.0.x you can have up to 4 vCPUs in a VM. in 3.5 that goes up to 16 (limited of course by hardware)

mcowger
Immortal
Immortal
Jump to solution

I dont know why people just make stuff up like this. ESX 3.5 is STILL limited to 4vCPUs per VM.

The configuration maximum's document states this CLEARLY on Page 2:

Number of virtual CPUs per virtual machine 4

--Matt

--Matt VCDX #52 blog.cowger.us
0 Kudos
Neth66
Enthusiast
Enthusiast
Jump to solution

My mistake. I was told (pre-3.5) that support for 16 vCPUs was coming in a future release, and I assumed that meant 3.5. I did not actually check the documentation.

0 Kudos