Pavel Machek wrote: > Hi! > >> When a VCPU enters its idle loop, it disables its periodic >> alarm and sets up a one shot alarm for the next time event. >> That way, it does not become ready to run just to service >> the periodic alarm interrupt. Instead, it can remain halted >> until there is some real work pending for it. This allows >> the hypervisor to use the physical resources more >> effectively since idle VCPUs will have lower overhead. > > Does this NO_IDLE_HZ work only on VMI-enabled runs or globally? We are > trying to get NO_IDLE_HZ working to save some power on notebooks; how > is it related to this? > The NO_IDLE_HZ implementation provided here is enabled when the VMI-Timer device is used as the timer interrupt source. The VMI-Timer device is only present on paravirtual hardware. However, the hooks introduced into the kernel (stop_hz_timer, restart_hz_timer) with these patches will be approximately the same (perhaps a subset) for implementing NO_IDLE_HZ on systems that use other interrupt sources. > Can you use NO_IDLE_HZ patches that are already floating around? > Certainly we plan to merge our NO_IDLE_HZ implementation with those patches once they are stabilized in the kernel. Presently, they seem to be too fast of a moving target to be worth merging at this point, though. Additionally, the VMI-Timer NO_IDLE_HZ implementation does not need all the machinery provided with the NO_IDLE_HZ patches that are floating around because the VMI-Timer code does not track time by counting interrupts. This leads to a fairly simplistic NO_IDLE_HZ implementation. Dan