From: Ingo Molnar <mingo@elte.hu>
To: Al Boldi <a1426z@gawab.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
Mike Galbraith <efault@gmx.de>,
Roman Zippel <zippel@linux-m68k.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Andrew Morton <akpm@linux-foundation.org>,
linux-kernel@vger.kernel.org
Subject: Re: CFS review
Date: Sun, 12 Aug 2007 17:52:44 +0200 [thread overview]
Message-ID: <20070812155242.GA1977@elte.hu> (raw)
In-Reply-To: <200708121827.36656.a1426z@gawab.com>
* Al Boldi <a1426z@gawab.com> wrote:
> > so could you please re-check chew jitter behavior with the latest
> > kernel? (i've attached the standalone patch below, it will apply
> > cleanly to rc2 too.)
>
> That fixes it, but by reducing granularity ctx is up 4-fold.
ok, great! (the context-switch rate is obviously up.)
> Mind you, it does have an enormous effect on responsiveness, as
> negative nice with small granularity can't hijack the system any more.
ok. i'm glad you like the result :-) This makes reniced X (or any
reniced app) more usable.
> The thing is, this unpredictability seems to exist even at nice level
> 0, but the smaller granularity covers it all up. It occasionally
> exhibits itself as hick-ups during transient heavy workload flux. But
> it's not easily reproducible.
In general, "hickups" can be due to many, many reasons. If a task got
indeed delayed by scheduling jitter that is provable, even if the
behavior is hard to reproduce, by enabling CONFIG_SCHED_DEBUG=y and
CONFIG_SCHEDSTATS=y in your kernel. First clear all the stats:
for N in /proc/*/task/*/sched; do echo 0 > $N; done
then wait for the 'hickup' to happen, and once it happens capture the
system state (after the hickup) via this script:
http://people.redhat.com/mingo/cfs-scheduler/tools/cfs-debug-info.sh
and tell me which specific task exhibited that 'hickup' and send me the
debug output. Also, could you try the patch below as well? Thanks,
Ingo
-------------------------------->
Subject: sched: fix sleeper bonus
From: Ingo Molnar <mingo@elte.hu>
Peter Ziljstra noticed that the sleeper bonus deduction code
was not properly rate-limited: a task that scheduled more
frequently would get a disproportionately large deduction.
So limit the deduction to delta_exec.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
kernel/sched_fair.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
Index: linux/kernel/sched_fair.c
===================================================================
--- linux.orig/kernel/sched_fair.c
+++ linux/kernel/sched_fair.c
@@ -75,7 +75,7 @@ enum {
unsigned int sysctl_sched_features __read_mostly =
SCHED_FEAT_FAIR_SLEEPERS *1 |
- SCHED_FEAT_SLEEPER_AVG *1 |
+ SCHED_FEAT_SLEEPER_AVG *0 |
SCHED_FEAT_SLEEPER_LOAD_AVG *1 |
SCHED_FEAT_PRECISE_CPU_LOAD *1 |
SCHED_FEAT_START_DEBIT *1 |
@@ -304,11 +304,9 @@ __update_curr(struct cfs_rq *cfs_rq, str
delta_mine = calc_delta_mine(delta_exec, curr->load.weight, lw);
if (cfs_rq->sleeper_bonus > sysctl_sched_granularity) {
- delta = calc_delta_mine(cfs_rq->sleeper_bonus,
- curr->load.weight, lw);
- if (unlikely(delta > cfs_rq->sleeper_bonus))
- delta = cfs_rq->sleeper_bonus;
-
+ delta = min(cfs_rq->sleeper_bonus, (u64)delta_exec);
+ delta = calc_delta_mine(delta, curr->load.weight, lw);
+ delta = min((u64)delta, cfs_rq->sleeper_bonus);
cfs_rq->sleeper_bonus -= delta;
delta_mine -= delta;
}
@@ -521,6 +519,8 @@ static void __enqueue_sleeper(struct cfs
* Track the amount of bonus we've given to sleepers:
*/
cfs_rq->sleeper_bonus += delta_fair;
+ if (unlikely(cfs_rq->sleeper_bonus > sysctl_sched_runtime_limit))
+ cfs_rq->sleeper_bonus = sysctl_sched_runtime_limit;
schedstat_add(cfs_rq, wait_runtime, se->wait_runtime);
}
next prev parent reply other threads:[~2007-08-12 15:53 UTC|newest]
Thread overview: 123+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-11 10:44 Al Boldi
2007-08-12 4:17 ` Ingo Molnar
2007-08-12 15:27 ` Al Boldi
2007-08-12 15:52 ` Ingo Molnar [this message]
2007-08-12 19:43 ` Al Boldi
2007-08-21 10:58 ` Ingo Molnar
2007-08-21 22:27 ` Al Boldi
2007-08-24 13:45 ` Ingo Molnar
2007-08-25 22:27 ` Al Boldi
2007-08-25 23:15 ` Ingo Molnar
2007-08-26 16:27 ` Al Boldi
2007-08-26 16:39 ` Ingo Molnar
2007-08-27 4:06 ` Al Boldi
2007-08-27 10:53 ` Ingo Molnar
2007-08-27 14:46 ` Al Boldi
2007-08-27 20:41 ` Ingo Molnar
2007-08-28 4:37 ` Al Boldi
2007-08-28 5:05 ` Linus Torvalds
2007-08-28 5:23 ` Al Boldi
2007-08-28 7:28 ` Mike Galbraith
2007-08-28 7:36 ` Ingo Molnar
2007-08-28 16:34 ` Linus Torvalds
2007-08-28 16:44 ` Arjan van de Ven
2007-08-28 16:45 ` Ingo Molnar
2007-08-29 4:19 ` Al Boldi
2007-08-29 4:53 ` Ingo Molnar
2007-08-29 5:58 ` Al Boldi
2007-08-29 6:43 ` Ingo Molnar
2007-08-28 20:46 ` Valdis.Kletnieks
2007-08-28 7:43 ` Xavier Bestel
2007-08-28 8:02 ` Ingo Molnar
2007-08-28 19:19 ` Willy Tarreau
2007-08-28 19:55 ` Ingo Molnar
2007-08-29 4:18 ` Ingo Molnar
2007-08-29 4:29 ` Keith Packard
2007-08-29 4:46 ` Ingo Molnar
2007-08-29 7:57 ` Keith Packard
2007-08-29 8:04 ` Ingo Molnar
2007-08-29 8:53 ` Al Boldi
2007-08-29 15:57 ` Keith Packard
2007-08-29 19:56 ` Rene Herman
2007-08-30 7:05 ` Rene Herman
2007-08-30 7:20 ` Ingo Molnar
2007-08-31 6:46 ` Tilman Sauerbeck
2007-08-31 10:44 ` DRM and/or X trouble (was Re: CFS review) Rene Herman
2007-08-31 14:55 ` DRM and/or X trouble Satyam Sharma
2007-08-30 16:06 ` CFS review Chuck Ebbert
2007-08-30 16:48 ` Rene Herman
2007-08-29 4:40 ` Mike Galbraith
2007-08-29 3:42 ` Bill Davidsen
2007-08-29 3:37 ` Bill Davidsen
2007-08-29 3:45 ` Ingo Molnar
2007-08-29 13:11 ` Bill Davidsen
-- strict thread matches above, loose matches on Subject: below --
2007-07-10 8:31 -mm merge plans for 2.6.23 Andrew Morton
2007-07-11 12:43 ` x86 status was " Andi Kleen
2007-07-11 17:42 ` Ingo Molnar
2007-07-11 21:16 ` Andi Kleen
2007-07-11 21:46 ` Andrea Arcangeli
2007-07-11 22:09 ` Linus Torvalds
2007-07-13 2:23 ` Roman Zippel
2007-07-13 4:47 ` Mike Galbraith
2007-07-13 17:23 ` Roman Zippel
2007-07-14 5:04 ` Mike Galbraith
2007-08-01 3:41 ` CFS review Roman Zippel
2007-08-01 7:12 ` Ingo Molnar
2007-08-01 7:26 ` Mike Galbraith
2007-08-01 7:30 ` Ingo Molnar
2007-08-01 7:36 ` Mike Galbraith
2007-08-01 8:49 ` Mike Galbraith
2007-08-01 13:19 ` Roman Zippel
2007-08-01 15:07 ` Ingo Molnar
2007-08-01 17:10 ` Andi Kleen
2007-08-01 16:27 ` Linus Torvalds
2007-08-01 17:48 ` Andi Kleen
2007-08-01 17:50 ` Ingo Molnar
2007-08-01 18:01 ` Roman Zippel
2007-08-01 19:05 ` Ingo Molnar
2007-08-09 23:14 ` Roman Zippel
2007-08-10 5:49 ` Ingo Molnar
2007-08-10 13:52 ` Roman Zippel
2007-08-10 14:18 ` Ingo Molnar
2007-08-10 16:47 ` Mike Galbraith
2007-08-10 17:19 ` Roman Zippel
2007-08-10 16:54 ` Michael Chang
2007-08-10 17:25 ` Roman Zippel
2007-08-10 19:44 ` Ingo Molnar
2007-08-10 19:47 ` Willy Tarreau
2007-08-10 21:15 ` Roman Zippel
2007-08-10 21:36 ` Ingo Molnar
2007-08-10 22:50 ` Roman Zippel
2007-08-11 5:28 ` Willy Tarreau
2007-08-12 5:17 ` Ingo Molnar
2007-08-11 0:30 ` Ingo Molnar
2007-08-20 22:19 ` Roman Zippel
2007-08-21 7:33 ` Mike Galbraith
2007-08-21 8:35 ` Ingo Molnar
2007-08-21 11:54 ` Roman Zippel
2007-08-11 5:15 ` Willy Tarreau
2007-08-10 7:23 ` Mike Galbraith
2007-08-01 11:22 ` Ingo Molnar
2007-08-01 12:21 ` Roman Zippel
2007-08-01 12:23 ` Ingo Molnar
2007-08-01 13:59 ` Ingo Molnar
2007-08-01 14:04 ` Arjan van de Ven
2007-08-01 15:44 ` Roman Zippel
2007-08-01 17:41 ` Ingo Molnar
2007-08-01 18:14 ` Roman Zippel
2007-08-03 3:04 ` Matt Mackall
2007-08-03 3:57 ` Arjan van de Ven
2007-08-03 4:18 ` Willy Tarreau
2007-08-03 4:31 ` Arjan van de Ven
2007-08-03 4:53 ` Willy Tarreau
2007-08-03 4:38 ` Matt Mackall
2007-08-03 8:44 ` Ingo Molnar
2007-08-03 9:29 ` Andi Kleen
2007-08-01 11:37 ` Ingo Molnar
2007-08-01 12:27 ` Roman Zippel
2007-08-01 13:20 ` Andi Kleen
2007-08-01 13:33 ` Roman Zippel
2007-08-01 14:36 ` Ingo Molnar
2007-08-01 16:11 ` Andi Kleen
2007-08-02 2:17 ` Linus Torvalds
2007-08-02 4:57 ` Willy Tarreau
2007-08-02 10:43 ` Andi Kleen
2007-08-02 10:07 ` Willy Tarreau
2007-08-02 16:09 ` Ingo Molnar
2007-08-02 22:38 ` Roman Zippel
2007-08-02 19:16 ` Daniel Phillips
2007-08-02 23:23 ` Roman Zippel
2007-08-01 14:40 ` Ingo Molnar
2007-08-01 14:49 ` Peter Zijlstra
2007-08-02 17:36 ` Roman Zippel
2007-08-02 15:46 ` Ingo Molnar
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=20070812155242.GA1977@elte.hu \
--to=mingo@elte.hu \
--cc=a1426z@gawab.com \
--cc=akpm@linux-foundation.org \
--cc=efault@gmx.de \
--cc=linux-kernel@vger.kernel.org \
--cc=peterz@infradead.org \
--cc=torvalds@linux-foundation.org \
--cc=zippel@linux-m68k.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
Powered by JetHome