I'm running a windows 2003 guest in Linux xiamx-pc 3.2.0-24-generic #39-Ubuntu SMP Mon May 21 16:52:17 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

I notice that VirtualBox process constantly takes around 50% of CPU time but the process manager in 2003 shows only 5% of CPU usage. What could be the cause? Is there anyway that I can lower down the CPU usage of VirtualBox process?

  • check out this answer, seems related: superuser.com/a/156655/65379 – Baarn Jun 19 '12 at 22:25
  • That's a good tip. Keep in mind it will limit Windows to a single virtual core though. Another good link for improving Windows VM performance: blog.jdpfu.com/2010/06/22/virtualbox-performance-improved The network tip has helped me a lot for a network-heavy VM, and the SATA tip is a VERY noticeable improvement. – Vickash Jun 21 '12 at 3:56
  • I had a problem with the audio device, running one core on 100%. I just disabled audio for the virtual machine. – davidbaumann Dec 9 '19 at 13:09

While the SATA and NIC statements in the linked article above are still true, the best performance comes from:

  • fully allocating storage (don't use sparse files unless you are on SSDs)
  • properly allocating RAM and CPU (too little for the host or the guests is bad)
  • using VirtIO drivers for storage and networking (these drivers are available for both Linux and Windows)

There are a few other settings like disabling any video acceleration, 2D and 3D. I've written another article after seeing a Core i7 brought to 30 minute Ubuntu desktop logins with default VirtualBox settings.

If you are doing server virtualization, not desktop OSes, please do not use VirtualBox. Use KVM, LXC or ESXi instead. If you can get Spice working, even remote desktop performance over the LAN and WAN can be impressive with KVM as the host.

VirtualBox is best for desktop virtualization. Only VMware Workstation is better, IMHO.


This is a hunch, but it could be to do with the way recent versions of Windows 10 from version 18xx onward use timers. They issue about 2000 interrupts/second polling timers and the order of preference of timers cannot be overridden. The only workaround that worked for me on KVM was to expose an emulated hyperv clock with hv_synic and hv_stimer enlightenments. Because hyperv is the only clock source with higher precedence, Windows will switch to using it, and it has a much lower hard-coded interrupt poll rate.

I don't know if the same workaround is available with Virtual Box, but for finding the root cause I'd start looking at whether those timer interrupts are being polled 2000 times per second.

As a cross-check, if you can get your hands on Windows 10 release 1709, try that. If idle CPU usage goes down dramatically compared to what you have now, you have found the root cause.

Edit: I just noticed you are using 2K3. Switching of HPET in VM settings may be sufficient to fix your problem. See here for how: https://www.virtualbox.org/manual/ch08.html

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.