schlittermann

Slow VWMare -- APM vs. VMWare

Symptom

Since about 2.4.18 there seems to be a problem if the apm driver is loaded and its idle_threshold is lower than 100% (CONFIG_APM_CPU_IDLE).

As soon as the guest system (the system inside the virtual machine) is idle, all time controlled actions seem to be slowed down. A "guest" seconds are about 2 ... 10 "host" seconds.

You can test if if your guest system is fairly idle and you start a ping. Normally the intervall between two echo requests is about 1 second. If you compare the guest system time before and after the ping you may see that there are about as many seconds gone as echo requests has been send. The seconds become nearly real seconds if you put some work on your guest (e.g. moving its mouse).

Solution

The first solution - disabling the CPU idle calls inside the kernel - is not what I want. As I'd like to have the idle calls if VMWare isn't used. So I extended the apm driver with the capability of changing the idle_threshold at runtime (via a new born entry in the proc file system: /proc/sys/kernel/idle_threshold).

Usage

To enable the proc entry the driver has to be loaded with an idle percentage below 100. You may achive this by enabling the CPU idle call option in the kernel config. Or you may pass idle_threshold=95 when loading the driver.

Once this has be done, you simply can read and write from and to /proc/sys/kernel/idle_threshold.

Download (Kernel 2.4)
Download (Kernel 2.6)