qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] main-loop: For tools, initialize timers as part


From: Michael Roth
Subject: Re: [Qemu-devel] [PATCH] main-loop: For tools, initialize timers as part of qemu_init_main_loop()
Date: Sun, 22 Jan 2012 18:12:50 -0600
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.24) Gecko/20111109 Thunderbird/3.1.16

On 01/22/2012 06:32 AM, Paolo Bonzini wrote:
On 01/21/2012 09:39 PM, Jamie Lokier wrote:
Is this a timer that need to fire soon after setting, every time?

I wonder if a different kind of Windows timer, lower-resolution, could
be used if the timeout is longer. If it has insufficient resolution,
it could be set to trigger a little early, then set a high-resolution
timer at that point.

Maybe that could help for Linux CONFIG_NOHZ guests?

No, it's an implementation detail of Windows multimedia timers. Just
enabling them apparently burns CPU.

There is another kind of timers for Windows but it didn't work reliably.
Finding out why would be the right fix, but anyway

I'd looked into timer queues, which the developer docs suggested had deprecated the use of mm timers, but I came across this which I figured was why mm was preferred (%30 average error for a 50ms periodic/oneshot) by the QEMU code:

http://www.virtualdub.org/blog/pivot/entry.php?id=272

Apparently Windows 7 has some fixes for drift that makes them reasonable for a clock source, but still fairly low-res for an event timer.

I suppose we could use some historical timer data to adaptively determine a reasonable minimum resolution to set...basically if the last timer fired X ns ago, we'd configure the resolution to be 1/10th of that periodic or whatever, and start them off low-res as James suggested to avoid unnecessary CPU burn, but it's a pretty loose heuristic.


Reviewed-by: Paolo Bonzini <address@hidden>

Paolo






reply via email to

[Prev in Thread] Current Thread [Next in Thread]