nx wrote:
On Tue, 17 May 2005 02:58:37 +0800, Matthias-Christian Ott <[EMAIL PROTECTED]> wrote:

Matthias-Christian Ott wrote:

nx wrote:

On Mon, 16 May 2005 21:33:47 +0800, Matthias-Christian Ott <[EMAIL PROTECTED]> wrote:

David Helstroom wrote:

Hi nx,
I'm not sure if this is the problem, but you may need to load the Real
Time Clock (RTC) module if it is available. To do this, run:
# modprobe rtc
This should load the RTC module on the standard Arch 2.6 kernels. To get
this module to load on boot, don't forget to add it to the MODULES line
in /etc/rc.conf.
Hope that helps,
Dave.
On Mon, 2005-05-16 at 20:02 +0800, nx wrote:


I find that my linux box's time always runs faster than real time.

This is the trouble:
[EMAIL PROTECTED] ~]$ LANG=C uptime
 19:17:58 up 3 days, 23:44,  1 user,  load average: 0.27, 0.21, 0.24
[EMAIL PROTECTED] ~]$ LANG=C date
Mon May 16 19:18:17 CST 2005
[EMAIL PROTECTED] ~]$ LANG=C hwclock
Mon May 16 18:59:42 2005  -0.271290 seconds

I double checked the 2 time with other clocks, the hwclock is accurate. The system clock gets about 18.5 minutes faster after 3 day running.

I noticed this problem several days ago.And I have googled about it, an article saying kernel timer 3 times faster. But its solution seems not suitable for me.

And I have checked that, it does not exist when kernel is 2.4.xx version.
It must be a kernel related problem, now I am using 2.6.11.7 kernel for that 18.5 minutes faster after 3 day.
Knoppix 3.8.1, slax 5.0.x get same result: system get 2-3 minutes faster after 6-8 hour running.


I have tried to address down the problem, but it seems to hard for an average user.
I think it's adjtimx's job to control the system clock's speed. But I can not figure out what parameters to give. And arch linux does not provide it.
Or more directly, the system clock speed is reflected from one of the files in /proc/sys or /sys, maybe that clock's speed can be tuned by write a number into a file there. /proc/sys/dev/rtc/max-user-freq and /sys/block/hda/queue/iosched/est_time may be. But I am not sure of their meaning. /sys/devices/system/timer/timer0 is an empty directory, then what is it for?



Have a look at the strace of both programs:
date does the realtime clock system calls directly.
hwclock uses /dev/rtc.
Maybe this is the problem if the /dev/rtc interface does not exist.




I checked strace's output and date.c,gettime.c from coreutils, date gets time using
int clock_gettime(clockid_t clock_id, struct timespec *tp);


hwclock gets time by read /dev/rtc

Where will clock_gettime get time from?

_______________________________________________
arch mailing list
[email protected]
http://www.archlinux.org/mailman/listinfo/arch

/dev/rtc uses the CMOS clock (include/asm-generic/rtc.h).
I don't know what clock_gettime uses (I lost the trace kernel/posix-timers.c), maybe it uses the pit timer (http://translate.google.com/translate?u=http%3A%2F%2Fcommunity.osdev.info%2F&langpair=ja%7Cen&hl=en&ie=UTF-8&oe=UTF-8&prev=%2Flanguage_tools) (I think so). The Kernel is so bad coded :). Try to use the hpet timer in your kernel config and see if it's right then. The Kernel uses some algorithms to correct the pit timer time because it's not exactly 100Hz (maybe your pit is a bit buggy or so).
Matthias-Christian Ott


That's the right link:
http://translate.google.com/translate?u=http%3A%2F%2Fcommunity.osdev.info%2F&langpair=ja%7Cen&hl=en&ie=UTF-8&oe=UTF-8&prev=%2Flanguage_tools




/proc/interrupts saying:
           CPU0
  0:  392133523    IO-APIC-edge  timer
  1:      46845    IO-APIC-edge  i8042
  8:          7    IO-APIC-edge  rtc
does it mean I am using APIC timer now?

How can I find which timers the hardware supports? And the way to select a timer at boot?

I will try hpet now. Hope it works perfectly. :)

According to intel a hpet is better. The PIT is a part of the APIC.
If you want to find out which timers your hardware supports you have to look at your mainboard :) (I don't know if there are more than hpet, pit and tsc, but this timers are common).


arch/i386/kernel/timers/timer_pm.c:
"Driver to use the Power Management Timer (PMTMR) available in some southbridges as primary timing source for the Linux kernel."


arch/i386/kernel/timers/timer_cyclone.c:
"This code implements timer_ops for the cyclone counter found on IBM x440, x360, and 
other Summit based systems."

Matthias-Christian Ott

_______________________________________________
arch mailing list
[email protected]
http://www.archlinux.org/mailman/listinfo/arch

Reply via email to