One-shot-oriented event timers management

Alexander Motin mav at FreeBSD.org
Mon Aug 30 07:53:16 UTC 2010


Brandon Gooch wrote:
> One thing I see:
> 
> Where is *frame pointing to? It isn't initialized in the function, so...

Thanks! Fixed. Patch updated.

> Also, for those of us testing, should we "reset" our timer settings
> back to defaults and work from there[1] (meaning, should we be futzing
> around with timer event sources, kern.hz, etc...)?

The general logic is still applicable.

Reducing HZ is less important now, but lower value allows system
slightly aggregate close events by the cost of precision. Unluckily we
have no better mechanism to do it now.

What's about event source - there is only one timer supported now and
sysctl/tunable name changed to kern.eventtimer.timer, so previous
options just won't work. Also with support for one-shot mode, use of RTC
and i8254 timers is not recommended any more - they do not support it.
Use LAPIC or HPET. If you have Core-iX class CPU - you may use any of
them, they are very close in functionality. If you use Core2 or earlier
- prefer HPET, as LAPIC is dying in C3 state.

If you use HPET on Core2-class CPU (actually on ICHX class south
bridges, which do not support MSI-like interrupts for HPET) - you may
like to set such tunables:
hint.atrtc.0.clock=0
hint.attimer.0.clock=0
hint.hpet.0.legacy_route=1
It will disable RTC and i8254 timers, but grant their interrupts to
HPET, allowing it to work as per-CPU for dual-CPU systems.

-- 
Alexander Motin


More information about the freebsd-hackers mailing list