Ticket #2526 (closed defect: fixed)
Non-uniform internal timer in guest OS
|Reported by:||CaptainFlint||Owned by:|
Description (last modified by frank) (diff)
Host machine: Core 2 Duo 6600, 2 GB RAM.
Host OS: WinXP SP3
Guest OS: SUSE Linux Enterprise Server 10 SP2
Partially the problem is mentioned in the forum threads:
and probably here:
However, I could find some more details which may be of use for reproducing and fixing the problem.
The internal timer inside VM sometimes runs non-uniformly. It looks like following:
- At first the guest OS looks somewhat slow in every aspect (including system clock which shows seconds passing more slowly than on the host clock). So, as time passes, the guest clock become more and more mistimed with the host one.
- Then suddenly the virtual machine starts to catch up the host clock: guest OS works much faster than before, keyboard delays are extremely low (so when I try to type e.g. "grep", I get something like "ggggggrrrrrreeeeeppppp"), the guest clock are running very fast (several seconds pass within only one "host second").
- When guest timer equals to the host one, the speed returns back to normal, then again slows down, and then speeds up, and so on.
Lengths of the periods described can be different. Sometimes, it is slow for couple of minutes, then fast for 7-10 seconds; sometimes it's slow for several seconds, then fast for 0,5-1 second.
I wanted to record a video with this behaviour. However, each time I run video recorder (I'm using UVScreenCamera), the problem became unreproducable. Finally, I noticed that UVScreenCamera's recording process performs something that forces VirtualBox's guest clock catch up the host clock. And the more frames per second I set in the recorder's options, the more smoothly runs VirtualBox. So, it seems that each additional redraw operation (or something like that) makes VB forcibly perform that "catch up" operation, which otherwise would be delayed for the future.