system internal timer runs 10 times too slow

Jeremy Chadwick freebsd at jdc.parodius.com
Thu Jul 7 09:58:03 UTC 2011


On Thu, Jul 07, 2011 at 07:39:05PM +1000, Aristedes Maniatis wrote:
> We upgraded an existing system to a new motherboard/CPU and found that timing in various programs is very odd. For example "top" only updates every 10 seconds instead of every second. And this confirms the oddness:
> 
> # while true; do echo `date`; sleep 1; done
> Thu Jul 7 19:09:01 EST 2011
> Thu Jul 7 19:09:11 EST 2011
> Thu Jul 7 19:09:21 EST 2011
> 
> 10 seconds instead of 1.
> 
> 
> So I looked first at the kernel timers:
> 
> # dmesg | grep -i time
> Timecounter "i8254" frequency 1193182 Hz quality 0
> Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000
> acpi_timer0: <24-bit timer at 3.579545MHz> port 0x808-0x80b on acpi0
> pci3: <multimedia, HDA> at device 0.1 (no driver attached)
> atrtc0: <AT realtime clock> port 0x70-0x71 irq 8 on acpi0
> acpi_hpet0: <High Precision Event Timer> iomem 0xfed00000-0xfed003ff on acpi0
> Timecounter "HPET" frequency 14318180 Hz quality 900
> Timecounters tick every 1.000 msec
> 
> 
> I switched i8254 and then to HPET. No difference.
> 
> # sysctl -w kern.timecounter.hardware=i8254
> kern.timecounter.hardware: ACPI-fast -> i8254
> # while true; do echo `date`; sleep 1; done
> Thu Jul 7 19:09:40 EST 2011
> Thu Jul 7 19:09:41 EST 2011
> 
> I switched to TSC:
> 
> # sysctl -w kern.timecounter.hardware=TSC
> kern.timecounter.hardware: HPET -> TSC
> # while true; do echo `date`; sleep 1; done
> Thu Jul 7 19:25:56 EST 2011
> Thu Jul 7 19:25:57 EST 2011
> Thu Jul 7 19:25:58 EST 2011
> 
> Now this looks like it fixed the problem, but actually it is worse. Now the clock matches what you'd expect, but there is still 10 seconds in real time between those date entries. That is, now the system clock is running 10 times too slow as well.
> 
> 
> # uname -a
> FreeBSD delish.ish.com.au 8.2-RELEASE FreeBSD 8.2-RELEASE #0: Thu Feb 17 02:41:51 UTC 2011     root at mason.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64
> 
> Base board information
> Manufacturer: ASUSTeK Computer INC.
> Product Name: P6X58D-E
> 
> BIOS information
> Vendor: American Megatrends Inc.
> Version: 0502
> Release Date: 11/16/2010
> BIOS Revision: 8.15
> 
> CPU Model:	Intel(R) Core(TM) i7 CPU         960  @ 3.20GHz

Do you have anything like powerd(8) enabled, or EIST / Intel SpeedStep
technology enabled in your system BIOS?  If so, can you try disabling
powerd and/or disabling EIST/SS?

Alternately, and this isn't to say FreeBSD doesn't have a problem, do
you have a replacement/spare motherboard you can try?  There's always
the possibility that you have a bad crystal on the motherboard and a
replacement board would rule that out.

-- 
| Jeremy Chadwick                                jdc at parodius.com |
| Parodius Networking                       http://www.parodius.com/ |
| UNIX Systems Administrator                   Mountain View, CA, US |
| Making life hard for others since 1977.               PGP 4BD6C0CB |



More information about the freebsd-stable mailing list