Task manager seems to be useless within a VM. How can you tell which processes within a VM are consuming CPU?
what exactly are you looking for? In all of my VM's task manager works just fine.
You are correct: Task manager does not provide accurate results inside a VM. This KB article will give you some information on why this is the case. If you want to do performance analysis and monitoring of your VMs, you should check the page.
Oh, and to answer your specific question, "How can you tell which processes within a VM are consuming CPU", you can trust the relative distributions within Task Manager. For instance, if it says that process A is consuming 30% and process B is 40%, then those ratios are correct. But the total 70% is not. You'll need to go to esxtop or VirtualCenter to find out how much of the actual CPU resources are being used.
The real problem is that ESXTOP can show that the CPU core(s) are being maxed out by the VM but in Windows Task Manager CPU utilisation can be less than 10%
This makes difficult to establish what process on the Windows box is taking the CPU Cores
Surely someone must have the answer to this?
The KB article I referenced above discusses this. Behavior identical to what you're describing can be caused by idle loop behavior. The OS is aware that the idle looping is not real work but ESX accounts for CPU cycles differently and considers that idle looping a busy wait, of sorts. Details for improving this are in this KB article.
The KB's only reference ESX 2.5 and Windows 2003 SP1
I have the same symptoms on ESX 3.5 Windows 2000 SP4, Windows 2003 SP1 and SP2
JonnyT
I'm curious to know if that idle loop behavior is prevalent in SP2 also. The KB article makes it unclear whether or not the aggressive handling is intended or not.