Does any one have any recommendation on the number of CPU's that you should assign to a guest OS? I have a Dual Core Intel CPU with 8 GB of RAM. I'm looking at creating 3 guest OS's with 2GB of RAM each and I'm wondering if I should accept the default and assign one CPU to the guest OS or two?
Is it better to assign just one CPU to the guest OS?
Do you see a performance difference if you have two CPU's assigned to the guest OS?
Advise as always greatly appreciated
As a general rule of thumb. I will always build new VM Guests with a single CPU, there is a performance overhead incurred with vSMP on the Host. Therefore vSMP, to my opinion should be avoided if at all possible.
Also for your information, it is polite to mark questions as questions, this will allow for the awarding of points to those answers that have given you advice or are considered correct.
Yours Tom Howarth
Message was edited by:
Also, answer is "depends". Does the application running on the VM use multiple CPU's? And if it does, will it ever use it? Are these existing servers you can monitor?
All of our servers, including four PeopleSoft app servers and two Domino servers were cut from two to one CPU and nobody noticed.
the guidance and recommendations are that you should always start with a single CPU, as VMware VMs work differently to Physical boxes, If you have software that requires 2 CPU then configure to the requirements but in general start with single and increase if performance requires it.
take a look at page 3 of the performance best practice guide:
Most of my VM's running under ESX 3.0.1 report multiple CPU's correctly in Task Manager based on number assigned in VM settings.
Several servers only report 1 CPU in Task Manager, although the VM is assigned 2 or 4 Processors.
How can I modify the server OS to make it see the second CPU?
These are Server 2003 Enterprise x64 VM's that were created via migration from physical hardware to VM using VMWare Converter.
You have to go in and change the HAL, just do the opposite of the below procedure and select a multi-processor HAL.
What should I do after I successfully convert my virtual machine?
If you change from a multi-processor system to a uni-processor system you need to manually change the HAL on the Windows server after the conversion. To do this go into Device Manager after the machine first boots and discovers it's new hardware and then click on Computer then right-click on the processor and select Update Driver. Then select Install from specific location and then Don't search I will choose the driver to install. Then select show All compatible hardware and select the appropriate processor. For example, if you went from a dual cpu to a single cpu then select ACPI uni-processor PC instead of ACPI multi-processor PC. You will need to reboot once you change this. To verify what HAL you are using you right-click your hal.dll in c:\windows\system32 and select the Version tab and select Internal Name and it should say halmacpi.dll for multi-processor acpi and halacpi.dll for uni-processor acpi.
Next clean up all the non-present hardware after the P2V conversion. To do this go to a CMD prompt and type SET DEVMGR_SHOW_NONPRESENT_DEVICES=1 and then DEVMGMT.MSC and then select Show Hidden Devices. Delete any old grayed out hardware.
Next remove any vendor specific applications/drivers. For example on a HP server you should go to Add/Remove programs and remove any HP management agents, survey utility, array config utility, version control agent, etc. Also check your NIC and make sure there are no vendor specific drivers there (ie. teaming). Check the Services to see if all there is anything vendor specific related there and disable any services that are.
Just like real world, what should you choose if VMware wasn't there.
If one CPU is sufficient please use one CPU. If a database server needs more than one please use more than one.
My experience is if you use two CPU's and the application is not CPU intensive the responce of your server is even slower than using one CPU!
These are Windows 2003 Server Enterprise x64 Servers, running SQL 2005 x64.
They were running with Dual Xeon's as physical servers and licensing and corporate standards call for multiple CPU's for all SQL 2005 servers.
So, in summary - we are attempting to match VM with real world to have consistent architechture.
This problem is resolved, here are some details:
1.) We did not change the number of processors when converting. The physical computer had 2 Intel Xeon processors, and the settings of the VM were in turn automatically set to 2 processors after conversion was complete.
2.) The operating system was already reporting that the Multiprocessor x64 CPU HAL was in use.
However, under Windows 2003 Server Enterprise x64, though- it shows as HAL.DLL when viewing Version / Internal name (Not halmacpi.dll)
3.) I tried the steps you detailed and so ran an "update" to the existing driver.
Task Manager now displays both CPU's!
For the record, this does significantly improve performance on SAP database and application servers.