[Techtalk] Theory vs. practice

Val Henson val at nmt.edu
Tue Jan 15 19:16:44 EST 2002


On Tue, Jan 15, 2002 at 06:35:22PM -0500, Raven, corporate courtesan wrote:
> 
> 	Okay, I can see that that's bad.  Is there a way to quickly
> check which processes are freeing up resources rather than requesting
> them, and then assign a higher priority to those?  Something to the
> effect of "need $100, who's releasing $100?  You?  Up front!".  You
> could even do some sort of secondary categorization, such that if you
> had a Platinum account needing $100, and you had a Gold account waiting
> to deposit $100 and a Silver account waiting to deposit $100, that the
> Gold account would get priority over the silver even under the new
> "who's got $100" system.

:) I'm getting a major kick out of watching everyone discover these
protocols on their own.

You've just invented a broadcast protocol for figuring out who has a
resource.  This means you don't have to keep lists of who has a
resource, but it does mean that you have to stop every process on a
system and ask it what its resources are.  You've also figured that
priority inheritance should be transitive - good. :)

> > Linux gets around this by introducing the concept of "fairness" (I'm
> > ignoring the "realtime" priorities).  Each process does eventually get
> > to run for a while, even if a higher priority process still wants the
> > CPU.  It's very egalitarian. :)
> 
> 	Like Cisco's weighted fair queueing (for the network geeks out
> there).  How is the weighting determined?

I'm going to simplify a bit here, since the Linux scheduler has been
rewritten and fiddled with many times since this quote was written in
kernel/sched.c:

/*
 *  'schedule()' is the scheduler function. It's a very simple and nice
 * scheduler: it's not perfect, but certainly works for most things.
 */
 
Basically, the longer you wait, the higher your priority gets.
Eventually, you have the highest priority, even if you started out
with the lowest, and you are now guaranteed to run.

-VAL



More information about the Techtalk mailing list