p
.Vt extern int hz;
.Vt extern int tick;
.Vt extern int tickadj;
.Vt extern int stathz;
.Vt extern int profhz;
XXX: .Vt extern int schedhz; ?
.Sh DESCRIPTION
The essential clock handling routines in
.Nx
are written to operate with two timers that run independently of each other.
The main clock, running
.Va hz
times per second, is used to keep track of real time.
p In another words, .Va hz specifies the number of times the .Xr hardclock 9 timer ticks per second. Normally .Xr hardclock 9 increments time by .Va tick each time it is called. If the system clock has drifted, .Xr adjtime 2 may be used to skew this increment based on the rate of .Va tickadj .
p The second timer is used to gather timing statistics. It also handles kernel and user profiling. If the second timer is programmable, it is randomized to avoid aliasing between the two clocks. The mean frequency of the second timer is .Va stathz . If a separate clock is not available, .Va stathz is set to .Va hz .
p If profiling is enabled, the clock normally used to drive .Va stathz may be run at a higher rate .Va profhz , which is required to be a multiple of .Va stathz . This will give higher resolution profiling information.
p These system variables are also available as .Em struct clockinfo from .Xr sysctl 3 and .Sy kern.clockrate from .Xr sysctl 8 . The .Va hz is hardware-dependent; it can be overridden (if the machine dependent code supports this) by defining .Dv HZ in the kernel configuration file (see .Xr options 4 ) . Only override the default value if you really know what you are doing. .Sh SEE ALSO .Xr adjtime 2 , .Xr callout 9 , .Xr hardclock 9 , .Xr microtime 9 , .Xr time_second 9