I recently setup a few virtual machines under ESX 4 and found that the Centos hosts were running in between 300 and 400 mhZ where as the Windows 2k3 and even the Ubuntu hosts were running at approx 70-100 mHz idle.
I learnt that it’s got to do with the frequency of the interupts changing from 100Hz to 1kHz in the 2.6 kernels.
The kernel that comes with Centos has been compiled with the 1000 Hz option as below:
grep ^CONFIG_HZ /boot/config-2.6.18-128.4.1.el5
CONFIG_HZ_1000=y
CONFIG_HZ=1000
By appending the options in bold below to the /boot/conf/grub.conf kernel= entries, the issue of high CPU is resolved:
kernel /vmlinuz-2.6.18-128.4.1.el5 ro root=/dev/VolGroup00/LogVol00 divider=10 clocksource=acpi_pm
Detail from vmware is here:
That's because the default frequency of interrupts changed from 100Hz to 1kHz (and that is per CPU) in 2.6 kernels. Placing much more stress on vmware and causing all bunch of problems with it. It's configurable compile time option (you'd need to recompile kernel to change it to the old default)