All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: Fw: missing #if for 1000 HZ
       [not found] <20030725203843.569863bc.akpm@osdl.org>
@ 2003-07-28 21:55 ` george anzinger
  0 siblings, 0 replies; only message in thread
From: george anzinger @ 2003-07-28 21:55 UTC (permalink / raw)
  To: Andrew Morton; +Cc: john stultz, Albert Cahalan, linux-kernel, Ulrich.Windl

Andrew Morton wrote:
> Guys?

If I understand what is being done, he is right.  By this measure the 
current error in the div (by shifting) is 2.4%.

I wonder how this plays with(line 639):

	time_phase += time_adj;
	if (time_phase <= -FINENSEC) {
		long ltemp = -time_phase >> (SHIFT_SCALE - 10);
		time_phase += ltemp << (SHIFT_SCALE - 10);
		delta_nsec -= ltemp;
	}

where, we are also using >>10 ~= /1000.  I _think_ this ladder 
approximation only delays part of the correction but does not loose 
it, but the more eyes the better.

-g
> 
> Begin forwarded message:
> 
> Date: 22 Jul 2003 21:01:16 -0400
> From: Albert Cahalan <albert@users.sourceforge.net>
> To: linux-kernel@vger.kernel.org, Ulrich.Windl@rz.uni-regensburg.de
> Cc: Andrew Morton <akpm@digeo.com>, alan@redhat.com
> Subject: missing #if for 1000 HZ
> 
> 
> This should improve timekeeping a bit @ 1000 HZ.
> 
> 
> diff -Naurd old/kernel/timer.c new/kernel/timer.c
> --- old/kernel/timer.c	2003-07-18 17:27:01.000000000 -0400
> +++ new/kernel/timer.c	2003-07-18 17:32:19.000000000 -0400
> @@ -606,6 +606,15 @@
>      else
>  	time_adj += (time_adj >> 2) + (time_adj >> 5);
>  #endif
> +#if HZ == 1000
> +    /* Compensate for (HZ==1000) != (1 << SHIFT_HZ).
> +     * Add 1.5625% and 0.78125% to get 1023.4375; => only 0.05% error (p. 14)
> +     */
> +    if (time_adj < 0)
> +	time_adj -= (-time_adj >> 6) + (-time_adj >> 7);
> +    else
> +	time_adj += (time_adj >> 6) + (time_adj >> 7);
> +#endif
>  }
>  
>  /* in the NTP reference this is called "hardclock()" */
> 
> 
> 
> 

-- 
George Anzinger   george@mvista.com
High-res-timers:  http://sourceforge.net/projects/high-res-timers/
Preemption patch: http://www.kernel.org/pub/linux/kernel/people/rml


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2003-07-28 21:56 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20030725203843.569863bc.akpm@osdl.org>
2003-07-28 21:55 ` Fw: missing #if for 1000 HZ george anzinger

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.