[ bmc, 11/13/98 ]
Using interval timers (either through the POSIX timer_gettime()/_settime()
interface or the BSD get/setitimer() interface) over a long period of time,
one may observe rare, isolated latency spikes on the order of ~2 to ~4 ms (with
hz at 100). Ironically, setting hz to 1000 will _increase_ the spikes'
amplitude to ~11-13 ms. The spikes will be regular, but quite rare (typically,
one every few hours; more frequent on larger memory systems). The latency
is due to a flaw in the memory scrubber (see Comments for more details).
Work Around
[ bmc, 11/13/98 ]
The most straight-forward workaround is to turn off the memory scrubber by
setting disable_memscrub to 1. On small memory machines without a history
of correctable ECC errors, this shouldn't be problematic.
If the memory scrubber is deemed required, memscrub_scan_pages can be set to
some number less than 512 (the default is 1024). To incur the lowest latencies,
memscrub_scan_pages should be set below 8.