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

  
 
  

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 counters are
     responsible for generation of monotonically increasing timestamps 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, sta-
     tistics, time keeping, profiling and many other things, based on callout(9)
     mechanism.  These purposes now grouped into three main callbacks:

     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  frequency
		  about 128Hz.

     profclock()  profiler  events  entry.   When enabled, called with frequency
		  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  hard-
     ware, 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 capabilities:
	   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 operation
     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.   De-
     fault value depends of chosen timer capabilities, but one-shot mode is pre-
     ferred, until other is forced by user or hardware.

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

     kern.eventtimer.idletick makes each CPU to receive  every	timer  interrupt
     independently of whether they busy or not.  By default this options is dis-
     abled.   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 15.1			 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+15.1-RELEASE+and+Ports>

home | help