I have just introduced a new guest Windows 2003 server standard. We have used our defaults of 1Gb of ram and 1 CPU (no reservations and no limits). This guest is running a multi threaded application called FloSuite. Whenever our users perform "tasks" on this server the guest CPU is maxing out at 100%. I have tried adding another virtual CPU to this server and it improved performance but not by much. I note that memory is not an issue.

I have read many differing articles about using multiple virtual CPU's in a guest and I am confused as to what the best practise would be to improve CPU performance in this instance. Sorry for being vague but should I throw more virtual CPU's at the server? Guidance on how to increase the guest performance would be appreciated.

Have you tried using task manager inside the guest to see what process(es) that are causing this load?
It would also be interesting to see the %USED %RDY and %CSTP values of this virtual machine as seen from esxtop (as run from the Service Console).

Adding another virtual cpu might give extra performance to the VM if the applications inside it are written to take advantage of it. By doing so you're putting extra load to your server as using vsmp causes some extra virtualization overhead. One should always start with one virtual cpu and add more if needed after testing the VM.

You could investigate giving the VM with performance issues a reservation for CPU. This would ensure it gets a base amount of CPU, even when the ESX host is under load. You can do something similar with CPU shares, as well. As larst mentioned, adding another CPU is only recommended if you can be sure the app is written for multiple CPUs. Otherwise, it can cause performance issues to use multiple CPUs in the VM on the ESX host. A discussion about why can be found here: http://communities.vmware.com/thread/131269.

Try running perfmon inside the VM to see more about what is doing what inside the VM.

Advanced tutorial on how to run the esxtop command to capture a batch file in csv format in order to export the file and use it for performance analysis. He demonstrates how to download the file using a vSphere web client (or vSphere client) and exp…