All modern OSes know to yield, right? That wouldn't be the problem? (Asking SUN/VB, not the people experiencing the problem.)
CentOS must have "top" and perhaps something graphical like System Monitor. If you run "/usr/bin/top" or "/usr/bin/gnome-system-monitor" within the guest, what process is hogging the cpu?
That's part of the issue. The vm is completely dormant. The idle process witin the VM is at 99% but the host shows the CPU pegged from the VirtualBox instance. It's actually over the 50% whenever anything is occurring in the VM.
A strace on the host VirtualBox process doesn't reveal a whole bunch. A few poll() and clock_gettime() but nothing to indicate why it's spinning so hard.
Part of the problem does appear to be that the cpufreq daemon does not load under VirtualBox. On the host we can see:
[root@ice9 ~]# lsmod|grep ^cpu
cpufreq_powersave 6209 0
cpufreq_ondemand 12493 0
Under the VM however, the the acpi_cpufreq module does not load (No such device). This may not be possible under the VM, but not sure at this point.
I also checked some of the default kernel configs for that particular CentOS kernel, particularly the CONFIG_APM_CPU_IDLE flag (which is set).
This said, I have an equivalent machine running under Xen and VMWare that don't have this problem so it appears to be specific to VB versus some virtual machine configuration. The issue is not confined to the Core2Duo chipset either. VirtualBox running on an AMD XP2000+ (single core) shows 75% CPU utilization on the host when the VM is completely idle.