PEP 418: another benchmark on FreeBSD

Add also more info on FreeBSD timecounters
This commit is contained in:
Victor Stinner 2012-04-12 00:19:16 +02:00
parent a7be2f184d
commit a15d634866
1 changed files with 63 additions and 5 deletions

View File

@ -333,6 +333,33 @@ Each function was called 10,000,000 times and CLOCK_MONOTONIC was used to get
the time before and after. The benchmark was run 5 times to keep the minimum
time.
FreeBSD 8.0 in kvm with hardware virtualization:
======================== ====== ========= ======= =======
Function TSC ACPI-Safe HPET i8254
======================== ====== ========= ======= =======
time() 191 ns 188 ns 189 ns 188 ns
CLOCK_SECOND 187 ns 184 ns 187 ns 183 ns
CLOCK_REALTIME_FAST 189 ns 180 ns 187 ns 190 ns
CLOCK_UPTIME_FAST 191 ns 185 ns 186 ns 196 ns
CLOCK_MONOTONIC_FAST 188 ns 187 ns 188 ns 189 ns
CLOCK_THREAD_CPUTIME_ID 208 ns 206 ns 207 ns 220 ns
CLOCK_VIRTUAL 280 ns 279 ns 283 ns 296 ns
CLOCK_PROF 289 ns 280 ns 282 ns 286 ns
clock() 342 ns 340 ns 337 ns 344 ns
CLOCK_UPTIME_PRECISE 197 ns 10380 ns 4402 ns 4097 ns
CLOCK_REALTIME 196 ns 10376 ns 4337 ns 4054 ns
CLOCK_MONOTONIC_PRECISE 198 ns 10493 ns 4413 ns 3958 ns
CLOCK_UPTIME 197 ns 10523 ns 4458 ns 4058 ns
gettimeofday() 202 ns 10524 ns 4186 ns 3962 ns
CLOCK_REALTIME_PRECISE 197 ns 10599 ns 4394 ns 4060 ns
CLOCK_MONOTONIC 201 ns 10766 ns 4498 ns 3943 ns
======================== ====== ========= ======= =======
Each function was called 100,000 times and CLOCK_MONOTONIC was used to get
the time before and after. The benchmark was run 5 times to keep the minimum
time.
NTP adjustment
@ -827,16 +854,17 @@ source to decide which one will be used.
so usually higher than 1 GHz. Its priority is 300 by default, but
falls to 0 if the processor frequency changes and the counter
becomes unstable.
* HPET: An HPET chip consists of a 64-bit up-counter (main counter)
counting at least at 10 MHz and a set of up to 256 comparators (at
least 3). Each HPET can have up to 32 timers.
* HPET: An High Precision Event Timer (HPET) chip consists of a 64-bit
up-counter (main counter) counting at least at 10 MHz and a set of up to 256
comparators (at least 3). Each HPET can have up to 32 timers. HPET can
cause around 3 seconds of drift per day.
* PIT (programmable interrupt timer): Intel 8253/8254 chipsets with a
configurable frequency in range 18.2 Hz - 1.2 MHz. Linux uses the
frequency 1,193,181.8 Hz. It is a 16-bit counter.
* PMTMR (power management timer): ACPI 24-bit timer with a frequency
of 3.5 MHz (3,579,545 Hz). Its priority is 200 by default, but
changes to 110 if the chipset is broken and need a software
workaround. HPET can cause around 3 seconds of drift per day.
workaround.
* Cyclone: The Cyclone timer uses a 32-bit counter on IBM Extended
X-Architecture (EXA) chipsets which include computers that use the
IBM "Summit" series chipsets (ex: x440). This is available in IA32
@ -859,11 +887,38 @@ Read also the `time(7) manual page
FreeBSD timers
--------------
The sysctl program can be used to change the timecounter. For example::
kern.timecounter.choice list available hardward clocks with their priority.
The sysctl program can be used to change the timecounter. Example::
# dmesg|grep Timecounter
Timecounter "i8254" frequency 1193182 Hz quality 0
Timecounter "ACPI-safe" frequency 3579545 Hz quality 850
Timecounter "HPET" frequency 100000000 Hz quality 900
Timecounter "TSC" frequency 3411154800 Hz quality 800
Timecounters tick every 10.000 msec
# sysctl kern.timecounter.choice
kern.timecounter.choice: TSC(800) HPET(900) ACPI-safe(850) i8254(0) dummy(-1000000)
# sysctl kern.timecounter.hardware="ACPI-fast"
kern.timecounter.hardware: HPET -> ACPI-fast
Available clocks:
* "TSC": Time Stamp Counter of the procesor
* "HPET": High Precision Event Timer
* "ACPI-fast": ACPI Power Management timer (fast mode)
* "ACPI-safe": ACPI Power Management timer (safe mode)
* "i8254": PIT with Intel 8254 chipset
The `commit 222222
<http://svnweb.freebsd.org/base?view=revision&revision=222222>`_ (May 2011)
decreased ACPI-fast timecounter quality to 900 and increased HPET timecounter
quality to 950: "HPET on modern platforms usually have better resolution and
lower latency than ACPI timer".
Read `Timecounters: Efficient and precise timekeeping in SMP kernels
<http://phk.freebsd.dk/pubs/timecounter.pdf`_ by Poul-Henning Kamp (2002) for
the FreeBSD Project.
Sleep, suspend and monotonic time
=================================
@ -1247,6 +1302,9 @@ Time:
bits of time
* `Win32 Performance Measurement Options
<http://drdobbs.com/windows/184416651>`_ by Matthew Wilson, May 01, 2003
* `Counter Availability and Characteristics for Feed-forward Based Synchronization
<http://www.cubinlab.ee.unimelb.edu.au/~jrid/Publications/ridoux_ispcs09.pdf>`_
by Timothy Broomhead, Julien Ridoux, Darryl Veitch (2009)
* System Management Interrupt (SMI) issues:
* `System Management Interrupt Free Hardware