lkml.org 
[lkml]   [2003]   [Jun]   [28]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: patch-O1int-0306281420 for 2.5.73 interactivity
FromRoberto Orenstein <>
Date28 Jun 2003 19:45:01 -0300
On Sat, 2003-06-28 at 17:26, pat erley wrote:
> I made a small error when I sent Con a piece of magic I wrote up to help the sleep period.  
> 
> what it says right now:
> 
> /kernel/sched.c around line 325
> 
> 
> sleep_period = (sleep_period *
> 	17 * sleep_period / ((17 * sleep_period / (5 * tau) + 2) * 5 * tau));
> ----------------------------------------------------------^
> 
> it should be:
> 
> sleep_period = (sleep_period *
> 	17 * sleep_period / ((17 * sleep_period / (5 * tau + 2)) * 5 * tau));
> --------------------------------------------------------------^
> 
> stupid parenthesis.
> 
> a little background.  what this essentially is is a taylor approximation of the function ln(66x+1) normalized.  ln(66x+1) happens to do a great job oas a weighting function on the range of 0 to 1, and because the input only happens to range from 0 to 1, only 2 terms were needed to do a 'good enough' job.
> 
> Pat

I did your correction and I got a kernel panic(attempting to kill init)
on boot. It didn't flushed to disk, so it isn't attached, but it panics
at effective_prio+0xcc/0xe0.
With objdump I could see it traps a division by 0: 
cc:       f7 fb                   idiv   %ebx

I remember cleary %ebx being 0 on the panic report.
And I tracked down and the code is on this else in effective_prio:
----------- sched.c 341-----------------
else {
	sleep_period = (sleep_period *
		17 * sleep_period / ((17 * sleep_period / (5 * tau + 2)) * 5 * tau));
	if (!sleep_period)
		return p->static_prio;
	}
--------------------------------------
I don't have the time now to track this further today, but what happens
if sleep_period is too small and tau is too big?
 Could this (17 * sleep_period / (5 * tau + 2) give 0 and so a division
by 0?

abs
Roberto



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 12:37    [from the cache]
©2003-2008