From: Mike Galbraith <efault@gmx.de>
To: Peter Williams <pwil3058@bigpond.net.au>
Cc: Helge Hafting <helgehaf@aitel.hist.no>,
Trond Myklebust <trond.myklebust@fys.uio.no>,
Ingo Molnar <mingo@elte.hu>, Con Kolivas <kernel@kolivas.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] sched: Fix adverse effects of NFS client on interactive response
Date: Sat, 07 Jan 2006 09:54:27 +0100 [thread overview]
Message-ID: <5.2.1.1.2.20060107085929.00c24f98@pop.gmx.net> (raw)
In-Reply-To: <43BF60EE.70909@bigpond.net.au>
At 05:34 PM 1/7/2006 +1100, Peter Williams wrote:
>Mike Galbraith wrote:
>
>>I'm trying to think of ways to quell the nasty side of sleep_avg without
>>destroying the good. One method I've tinkered with in the past with
>>encouraging results is to compute a weighted slice_avg, which is a
>>measure of how long it takes you to use your slice, and scale it to match
>>MAX_SLEEPAVG for easy comparison. A possible use thereof: In order to
>>be classified interactive, you need the sleep_avg, but that's not
>>enough... you also have to have a record of sharing the cpu. When your
>>slice_avg degrades enough as you burn cpu, you no longer get to loop in
>>the active queue. Being relegated to the expired array though will
>>improve your slice_avg and let you regain your status. Your priority
>>remains, so you can still preempt, but you become mortal and have to
>>share. When there is a large disparity between sleep_avg and slice_avg,
>>it can be used as a general purpose throttle to trigger
>>TASK_NONINTERACTIVE flagging in schedule() as negative feedback for the
>>ill behaved. Thoughts?
>
>Sounds like the kind of thing that's required. I think the deferred shift
>from active to expired is safe as long as CPU hogs can't exploit it and
>your scheme sounds like it might provide that assurance. One problem this
>solution will experience is that when the system gets heavily loaded every
>task will have small CPU usage rates (even the CPU hogs) and this makes it
>harder to detect the CPU hogs.
True. A gaggle of more or less equally well (or not) behaving tasks will
have their 'hogginess' diluted. I'll have to think more about scaling
with nr_running or maybe starting the clock at first tick of a new slice...
that should still catch most of the guys who are burning hard without being
preempted, or only sleeping for short intervals only to keep coming right
back to beat up poor cc1. I think the real problem children should stick
out enough for a proof of concept even without additional complexity.
> One slight variation of your scheme would be to measure the average
> length of the CPU runs that the task does (i.e. how long it runs without
> voluntarily relinquishing the CPU) and not allowing them to defer the
> shift to the expired array if this average run length is greater than
> some specified value. The length of this average for each task shouldn't
> change with system load. (This is more or less saying that it's ok for a
> task to stay on the active array provided it's unlikely to delay the
> switch between the active and expired arrays for very long.)
Average burn time would indeed probably be a better metric, but that would
require doing bookkeeping is the fast path. I'd like to stick to tick time
or even better, slice renewal time if possible to keep it down on the 'dead
simple and dirt cheap' shelf. After all, this kind of thing is supposed to
accomplish absolutely nothing meaningful the vast majority of the time :)
Thanks for the feedback,
-Mike
next prev parent reply other threads:[~2006-01-07 8:54 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-12-21 6:00 Peter Williams
2005-12-21 6:09 ` Trond Myklebust
2005-12-21 6:32 ` Peter Williams
2005-12-21 13:21 ` Trond Myklebust
2005-12-21 13:36 ` Kyle Moffett
2005-12-21 13:40 ` Trond Myklebust
2005-12-22 2:26 ` Peter Williams
2005-12-22 22:08 ` Trond Myklebust
2005-12-22 22:33 ` Peter Williams
2005-12-22 22:59 ` Trond Myklebust
2005-12-23 0:02 ` Kyle Moffett
2005-12-23 0:25 ` Trond Myklebust
2005-12-23 3:06 ` Peter Williams
2005-12-23 9:39 ` Trond Myklebust
2005-12-23 10:49 ` Peter Williams
2005-12-23 12:51 ` Trond Myklebust
2005-12-23 13:36 ` Peter Williams
2006-01-02 12:09 ` Pekka Enberg
2005-12-23 19:07 ` Lee Revell
2005-12-23 21:08 ` Trond Myklebust
2005-12-23 21:17 ` Lee Revell
2005-12-23 21:23 ` Trond Myklebust
2005-12-23 22:04 ` Lee Revell
2005-12-23 22:10 ` Trond Myklebust
2005-12-21 16:10 ` Horst von Brand
2005-12-21 20:36 ` Kyle Moffett
2005-12-21 22:59 ` Peter Williams
2005-12-21 16:11 ` Ingo Molnar
2005-12-21 22:49 ` Peter Williams
2006-01-02 11:01 ` Helge Hafting
2006-01-02 23:54 ` Peter Williams
2006-01-04 1:25 ` Peter Williams
2006-01-04 9:40 ` Marcelo Tosatti
2006-01-04 12:18 ` Con Kolivas
2006-01-04 10:31 ` Marcelo Tosatti
2006-01-04 21:51 ` Peter Williams
2006-01-05 6:31 ` Mike Galbraith
2006-01-05 11:31 ` Peter Williams
2006-01-05 14:31 ` Mike Galbraith
2006-01-05 23:13 ` Peter Williams
2006-01-05 23:33 ` Con Kolivas
2006-01-06 0:02 ` Peter Williams
2006-01-06 0:08 ` Con Kolivas
2006-01-06 0:40 ` Peter Williams
2006-01-06 7:39 ` Mike Galbraith
2006-01-07 1:11 ` Peter Williams
2006-01-07 5:27 ` Mike Galbraith
2006-01-07 6:34 ` Peter Williams
2006-01-07 8:54 ` Mike Galbraith [this message]
2006-01-07 23:40 ` Peter Williams
2006-01-08 5:51 ` Mike Galbraith
2006-01-07 9:30 ` Con Kolivas
2006-01-07 10:23 ` Mike Galbraith
2006-01-07 23:31 ` Peter Williams
2006-01-08 0:38 ` Con Kolivas
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.1.1.2.20060107085929.00c24f98@pop.gmx.net \
--to=efault@gmx.de \
--cc=helgehaf@aitel.hist.no \
--cc=kernel@kolivas.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=pwil3058@bigpond.net.au \
--cc=trond.myklebust@fys.uio.no \
/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®