[ntp:questions] Re: linux system clock egregiously slow!

Ulrich Windl Ulrich.Windl at RZ.Uni-Regensburg.DE
Wed Feb 4 12:45:07 UTC 2004


David Wuertele <dave-gnus at bfnet.com> writes:

> I realize this may be off-topic, but I figured the time-heads on this
> list might be better prepared to point me in the right direction than
> on the linux kernel lists...
> 
> I run linux 2.4.18 on an embedded MIPS little-endian CPU, but I'm
> getting distressingly poor system clock performance.  My CPU clock is
> supposed to be good to about 30 PPM, but my system time is always slow
> to the tune of 800 PPM!
> 
> I do a lot of PIO, so I wonder if it is possible that the PIO makes
> the kernel lose timer interrupts?  I notice that my timer is implemented

Depends on the overall performance, but according to my i386
experience I'd say polled-IO is a no-no.

> as a countdown: in arch/mips/kernel/time.c:timer_interrupt(), it says:
> 
> /*
>  * high-level timer interrupt service routines.  This function
>  * is set as irqaction->handler and is invoked through do_IRQ.
>  */
> void timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
> {
> 	if (mips_cpu.options & MIPS_CPU_COUNTER) {
> 		unsigned int count;
> 
> 		/*
> 		 * The cycle counter is only 32 bit which is good for about
> 		 * a minute at current count rates of upto 150MHz or so.
> 		 */
> 		count = read_32bit_cp0_register(CP0_COUNT);
> 		timerhi += (count < timerlo);   /* Wrap around */
> 		timerlo = count;
> 
> 		/*
> 		 * set up for next timer interrupt - no harm if the machine
> 		 * is using another timer interrupt source.
> 		 * Note that writing to COMPARE register clears the interrupt
> 		 */
> 		write_32bit_cp0_register (CP0_COMPARE,
> 					  count + cycles_per_jiffy);
> 
> 	}
> <snip>...
> 
> Does it make sense that the average latency to the
> write_32bit_cp0_register() command would be .8ms?
> 
> I understand that I can use ntpd to correct this problem, but 800PPM
> seems egreggiously bad to me.  Any suggestions are welcome!

Try the jitter.c program found in the NTP sources. If your system
clock does huge jumps, you are having a problem.

Ulrich

> 
> Dave



More information about the questions mailing list