lkml.org 
[lkml]   [1998]   [Nov]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [patch] idle_task was wasting a lot of CPU
On Fri, 27 Nov 1998, Andrea Arcangeli wrote:

> --- linux/kernel/sched.c:1.1.1.2 Fri Nov 27 11:19:09 1998
> +++ linux/kernel/sched.c Fri Nov 27 11:41:41 1998
> @@ -130,8 +133,15 @@
> }
> #endif
> #endif
> - if (p->policy != SCHED_OTHER || p->counter > current->counter + 3)
> - current->need_resched = 1;
> + if (/* idle_task == current || */ p->counter >= current->counter ||
> + p->policy != SCHED_OTHER)
> + current->need_resched = 1;
> }

Andrea, this is absurd. I already told you that the number of
reschedules increased by 25% when we test for > current->counter,
but the equal sign added makes this even worse. It would be better
to test for the idle task in a special case, since that is less
expensive than a greatly increased amount of schedule()s.
if (current == idle_task || p->counter >= current->counter ||
p->policy != SCHED_OTHER)
This should catch most things, with the most commonly
occurring situations placed first. An alternative is
to have the idle task mark itself with SCHED_YIELD so
the != SCHED_OTHER test will pass. Since the idle task
is never subjected to goodness() the SCHED_YIELD will
never be cleared and we can keep on using the trick...

cheers,

Rik -- now completely used to dvorak kbd layout...
+-------------------------------------------------------------------+
| Linux memory management tour guide. H.H.vanRiel@phys.uu.nl |
| Scouting Vries cubscout leader. http://www.phys.uu.nl/~riel/ |
+-------------------------------------------------------------------+

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

\
 
 \ /
  Last update: 2005-03-22 13:45    [from the cache]
©2003-2014 Jasper Spaans. Advertise on this site