ACPI-fast default timecounter, but HPET 83% faster
Pieter de Goeje
pieter at degoeje.nl
Mon Apr 27 00:02:49 UTC 2009
Dear hackers,
While fiddling with the sysctl kern.timecounter.hardware, I found out that on
my system HPET is significantly faster than ACPI-fast. Using the program
below I measured the number of clock_gettime() calls the system can execute
per second. I ran the program 10 times for each configuration and here are
the results:
x ACPI-fast
+ HPET
+-------------------------------------------------------------------------+
|x +|
|x +|
|x ++|
|x ++|
|x ++|
|x ++|
|A |A|
+-------------------------------------------------------------------------+
N Min Max Median Avg Stddev
x 10 822032 823752 823551 823397.8 509.43254
+ 10 1498348 1506862 1502830 1503267.4 2842.9779
Difference at 95.0% confidence
679870 +/- 1918.94
82.5688% +/- 0.233052%
(Student's t, pooled s = 2042.31)
System details: Intel(R) Core(TM)2 Duo CPU E6750 @ 2.66GHz (3200.02-MHz
686-class CPU), Gigabyte P35-DS3R motherboard running i386 -CURRENT updated
today.
Unfortunately I only have one system with a HPET timecounter, so I cannot
verify these results on another system. If similar results are obtained on
other machines, I think the HPET timecounter quality needs to be increased
beyond that of ACPI-fast.
Regards,
Pieter de Goeje
----- 8< ----- clock_gettime.c ----- 8< ------
#include <sys/time.h>
#include <stdio.h>
#include <time.h>
#define COUNT 1000000
int main() {
struct timespec ts_start, ts_stop, ts_read;
double time;
int i;
clock_gettime(CLOCK_MONOTONIC, &ts_start);
for(i = 0; i < COUNT; i++) {
clock_gettime(CLOCK_MONOTONIC, &ts_read);
}
clock_gettime(CLOCK_MONOTONIC, &ts_stop);
time = (ts_stop.tv_sec - ts_start.tv_sec) + (ts_stop.tv_nsec -
ts_start.tv_nsec) * 1E-9;
printf("%.0f\n", COUNT / time);
}
More information about the freebsd-hackers
mailing list