title="Tickless NetBSD with high-resolution timers"
[Taylor R Campbell](mailto:riastradh@NetBSD.org)
NetBSD configures a timer device to deliver a periodic timer interrupt,
usually every 10 ms, in order to count time, wake threads that are
This made sense when timer devices were expensive to program and CPUs
ran at MHz.
But today, CPUs run at GHz; timers on modern x86, arm, mips,
etc. hardware is cheap to reprogram; programs expect greater than
10 ms resolution for sleep times; and mandatory periodic activity on
idle machines wastes power.
There are three main miletones to this project:
1. Design a machine-independent high-resolution timer API, implement it
on a couple machines, and develop tests to confirm that it works, in
order to enable high-resolution sleeps.
2. Convert all the functions of the periodic 10 ms timer, `hardclock',
to schedule activity only when needed.
3. Convert the various software subsystems that rely on periodic timer
interrupts every tick, or every second, via
either to avoid periodic work altogether, or to batch it up only when
the machine is about to go idle, in order to reduce the number of
wakeups and thereby reduce power consumption.
CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb