Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
EVENTTIMERS(4)		    Kernel Interfaces Manual		EVENTTIMERS(4)

NAME
       eventtimers -- kernel event timers subsystem

SYNOPSIS
       Kernel  uses  several types of time-related devices, such as: real time
       clocks, time counters and event timers.	Real time  clocks  responsible
       for  tracking  real world time, mostly when system is down.  Time coun-
       ters are	responsible for	generation of monotonically  increasing	 time-
       stamps  for  precise  uptime tracking purposes, when system is running.
       Event timers are	responsible for	 generating  interrupts	 at  specified
       time or periodically, to	run different time-based events.  This page is
       about the last.

DESCRIPTION
       Kernel  uses time-based events for many different purposes: scheduling,
       statistics, time	keeping, profiling and many  other  things,  based  on
       callout(9) mechanism.  These purposes now grouped into three main call-
       backs:

       hardclock()  callout(9) and timekeeping events entry.  Called with fre-
		    quency defined by hz variable, usually 1000Hz.

       statclock()  statistics	and  scheduler events entry.  Called with fre-
		    quency about 128Hz.

       profclock()  profiler events entry.  When  enabled,  called  with  fre-
		    quency about 8KHz.

       Different  platforms  provide  different	 kinds of timer	hardware.  The
       goal of the event timers	subsystem is to	provide	unified	way to control
       that hardware, and to use it, supplying kernel with all required	 time-
       based events.

       Each driver implementing	event timers, registers	them at	the subsystem.
       It  is possible to see the list of present event	timers,	like this, via
       kern.eventtimer sysctl:

       kern.eventtimer.choice: HPET(550) LAPIC(400) i8254(100) RTC(0)
       kern.eventtimer.et.LAPIC.flags: 15
       kern.eventtimer.et.LAPIC.frequency: 0
       kern.eventtimer.et.LAPIC.quality: 400
       kern.eventtimer.et.i8254.flags: 1
       kern.eventtimer.et.i8254.frequency: 1193182
       kern.eventtimer.et.i8254.quality: 100
       kern.eventtimer.et.RTC.flags: 17
       kern.eventtimer.et.RTC.frequency: 32768
       kern.eventtimer.et.RTC.quality: 0
       kern.eventtimer.et.HPET.flags: 7
       kern.eventtimer.et.HPET.frequency: 14318180
       kern.eventtimer.et.HPET.quality:	550

       where:

       kern.eventtimer.et.X.flags is a bitmask,	defining event timer capabili-
       ties:
	     1	     periodic mode supported,
	     2	     one-shot mode supported,
	     4	     timer is per-CPU,
	     8	     timer may stop when CPU goes to sleep state,
	     16	     timer supports only power-of-2 divisors.

       kern.eventtimer.et.X.frequency is a timer base frequency,

       kern.eventtimer.et.X.quality is an integral value, defining how good is
       this timer, comparing to	others.

       Timers management code of the kernel chooses one	timer from that	 list.
       Current	choice can be read and affected	via kern.eventtimer.timer tun-
       able/sysctl.  Several other tunables/sysctls are	affecting how  exactly
       this timer is used:

       kern.eventtimer.periodic	 allows	to choose periodic and one-shot	opera-
       tion mode.  In periodic mode, periodic interrupts from  timer  hardware
       are  taken  as  the only	source of time for time	events.	 One-shot mode
       instead uses currently selected time counter to precisely schedule  all
       needed events and programs event	timer to generate interrupt exactly in
       specified  time.	  Default  value depends of chosen timer capabilities,
       but one-shot mode is preferred, until other is forced by	user or	 hard-
       ware.

       kern.eventtimer.singlemul  in  periodic	mode  specifies	how much times
       higher timer frequency should be, to not	strictly alias hardclock() and
       statclock() events.  Default values are 1, 2 or 4, depending on config-
       ured HZ value.

       kern.eventtimer.idletick	makes each CPU to receive every	 timer	inter-
       rupt  independently  of	whether	they busy or not.  By default this op-
       tions is	disabled.  If chosen timer is per-CPU  and  runs  in  periodic
       mode, this option has no	effect - all interrupts	are always generating.

SEE ALSO
       apic(4),	atrtc(4), attimer(4), hpet(4), timecounters(4),	eventtimers(9)

FreeBSD	14.3			March 13, 2012			EVENTTIMERS(4)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=eventtimers&sektion=4&manpath=FreeBSD+14.3-RELEASE+and+Ports>

home | help