From: Mike Galbraith <efault@gmx.de>
To: Bill Davidsen <davidsen@tmr.com>
Cc: Helge Hafting <helgehaf@aitel.hist.no>, linux-kernel@vger.kernel.org
Subject: Re: O(1) scheduler & interactivity improvements
Date: Sat, 28 Jun 2003 07:44:26 +0200 [thread overview]
Message-ID: <5.2.0.9.2.20030628064029.00cfa800@pop.gmx.net> (raw)
In-Reply-To: <Pine.LNX.3.96.1030627234408.25848A-100000@gatekeeper.tmr.c om>
At 11:51 PM 6/27/2003 -0400, Bill Davidsen wrote:
>On Fri, 27 Jun 2003, Mike Galbraith wrote:
>
>
> > (simple? decode stack, find out where he was sleeping, and then have to
> > decide what to do based upon that after _every sleep_? sprinkle
> scheduling
> > decisions around every place that does wakeups?... i can just imagine Al's
> > reaction to someone suggesting that for the VFS... someone better run fast
> > and hide well:)
>
>I'm quoting the above to show I've read you objection, but I think you
>have it backward.
> >
> > >A pipe wakeup can be handled by taking a look at the other end.
> > >If the other process has interactivity bonus, grab half of
> > >it. (And halve the bonus belonging to that process.)
> > >No bonus is created in this case, so no risk of DOS.
> > >It is merely redistributed.
> > >
> > >And it is simple - there is one thing that woke the
> > >process up - so only one thing to check.
> >
> > How?
>
>
> > >Hard corner cases can be avoided. Perhaps bunch of pipes,
> > >files, devices, sockets and page-ins becomes ready
> > >simultaneosly. A detailed priority calculation is clearly
> > >pointless, so just use one of the things - or none.
> > >
> > >>Until someone demonstrates that the DoS/abuse scenarios I might be
> > >>imagining are real, in C, I think I'll do the smart thing: try to stop
> > >>worrying about it and stick to very very simple stuff.
> > >
> > >I thought the Irman thing was what killed the previous attempt
> > >at redistributing priorities?
> > What I think kills the priority redistribution idea is _massive_
> > complexity. I don't see anything simple. You would have to build the
> > logical connections between tasks, which currently doesn't exist. Wakeups
> > and task switches are extremely light weight operations, and no decision
> > you make at wakeup time has a ghost of a chance of not hurting like
> > hell. Just using the monotonic_clock() in the wakeup/schedule paths is
> > fairly painful. There is just no way you can run around looking for and
> > processing "who shot JR" information in those paths (no way _I_ can
> imagine
> > anyway) without absolutely destroying performance.
>
>Why do it at wakeup. Is it easier to just decide at the time of the
>processes blocking to decisde there if it is blocking on an interactive
>transaction? Is it that easy or is it really necessary to make the process
>perfect?
I'm no clean freak, but fiddling with scheduling information all over the
place seems like a very bad idea. (before anyone says it, yes, we fiddle
with state all over the place;) I can imagine doing something dirty in
driver code for specific cases (kdb/mouse are always interactivity
indicators), but not in generic code.
Besides, the logical bindings for foo | bar | ... | baz do not exist in the
kernel. The kernel knows and cares only that single entities are using
open/read/write/close primitives. This is why I said I could _imagine_ a
process struct... as the container for this missing (it lives in userland)
information.
Another besides: it makes zero difference it you add overhead to wakeup
time or go to sleep time. If it's something you do a lot of, adding
overhead to it is going to hurt a lot.
-Mike
next prev parent reply other threads:[~2003-06-28 5:26 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-06-22 16:07 Felipe Alfaro Solana
2003-06-22 20:00 ` Davide Libenzi
2003-06-23 12:50 ` Jesse Pollard
2003-06-23 8:09 ` Helge Hafting
2003-06-23 10:18 ` Felipe Alfaro Solana
2003-06-23 16:21 ` Daniel Gryniewicz
2003-06-23 18:59 ` Felipe Alfaro Solana
2003-06-23 19:21 ` Memory? " Roger Larsson
2003-06-23 16:47 ` Helge Hafting
2003-06-24 18:12 ` Bill Davidsen
2003-06-25 21:41 ` Helge Hafting
[not found] ` <5.2.0.9.2.20030624215008.00ce73b8@pop.gmx.net>
2003-06-26 9:59 ` Helge Hafting
2003-06-26 10:39 ` Mike Galbraith
2003-06-26 14:50 ` Bill Davidsen
2003-06-26 23:10 ` Timothy Miller
[not found] ` <Pine.LNX.3.96.1030626104733.17562D-100000@gatekeeper.tmr.c om>
2003-06-27 6:36 ` Mike Galbraith
2003-06-27 8:18 ` Helge Hafting
2003-06-27 9:46 ` Mike Galbraith
2003-06-27 11:39 ` Helge Hafting
2003-06-27 12:18 ` Mike Galbraith
2003-06-28 3:51 ` Bill Davidsen
[not found] ` <Pine.LNX.3.96.1030627234408.25848A-100000@gatekeeper.tmr.c om>
2003-06-28 5:44 ` Mike Galbraith [this message]
2003-06-28 14:34 ` Helge Hafting
2003-06-29 6:08 ` Mike Galbraith
2003-06-30 13:37 ` Bill Davidsen
2003-06-27 6:54 ` jw schultz
2003-06-23 10:50 John Bradford
2003-06-23 11:22 ` Felipe Alfaro Solana
2003-06-23 11:36 ` Denis Vlasenko
2003-06-23 12:44 John Bradford
2003-06-23 16:32 ` Helge Hafting
2003-06-23 19:00 ` Felipe Alfaro Solana
2003-06-23 19:17 ` Helge Hafting
2003-06-24 22:41 ` Timothy Miller
2003-06-25 21:42 ` Helge Hafting
2003-06-25 23:16 ` Timothy Miller
2003-06-23 21:48 ` Bill Davidsen
2003-06-23 19:20 John Bradford
2003-06-23 23:32 John Bradford
2003-06-24 4:13 ` Bill Davidsen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5.2.0.9.2.20030628064029.00cfa800@pop.gmx.net \
--to=efault@gmx.de \
--cc=davidsen@tmr.com \
--cc=helgehaf@aitel.hist.no \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®