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 06:17:36 +0200 [thread overview]
Message-ID: <20070812041736.GA18291@elte.hu> (raw)
In-Reply-To: <200708111344.42934.a1426z@gawab.com>
* Al Boldi <a1426z@gawab.com> wrote:
> That's because granularity increases when decreasing nice, and results
> in larger timeslices, which affects smoothness negatively. chew.c
> easily shows this problem with 2 background cpu-hogs at the same
> nice-level.
>
> pid 908, prio 0, out for 8 ms, ran for 4 ms, load 37%
> pid 908, prio 0, out for 8 ms, ran for 4 ms, load 37%
> pid 908, prio 0, out for 8 ms, ran for 2 ms, load 26%
> pid 908, prio 0, out for 8 ms, ran for 4 ms, load 38%
> pid 908, prio 0, out for 2 ms, ran for 1 ms, load 47%
>
> pid 908, prio -5, out for 23 ms, ran for 3 ms, load 14%
> pid 908, prio -5, out for 17 ms, ran for 9 ms, load 35%
yeah. Incidentally, i refined this last week and those nice-level
granularity changes went into the upstream scheduler code a few days
ago:
commit 7cff8cf61cac15fa29a1ca802826d2bcbca66152
Author: Ingo Molnar <mingo@elte.hu>
Date: Thu Aug 9 11:16:52 2007 +0200
sched: refine negative nice level granularity
refine the granularity of negative nice level tasks: let them
reschedule more often to offset the effect of them consuming
their wait_runtime proportionately slower. (This makes nice-0
task scheduling smoother in the presence of negatively
reniced tasks.)
Signed-off-by: Ingo Molnar <mingo@elte.hu>
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.)
when testing this, you might also want to try chew-max:
http://redhat.com/~mingo/cfs-scheduler/tools/chew-max.c
i added a few trivial enhancements to chew.c: it tracks the maximum
latency, latency fluctuations (noise of scheduling) and allows it to be
run for a fixed amount of time.
NOTE: if you run chew from any indirect terminal (xterm, ssh, etc.) it's
best to capture/report chew numbers like this:
./chew-max 60 > chew.log
otherwise the indirect scheduling activities of the chew printout will
disturb the numbers.
> It looks like the larger the granularity, the more unpredictable it
> gets, which probably means that this unpredictability exists even at
> smaller granularity but is only exposed with larger ones.
this should only affect non-default nice levels. Note that 99.9%+ of all
userspace Linux CPU time is spent on default nice level 0, and that is
what controls the design. So the approach was always to first get nice-0
right, and then to adjust the non-default nice level behavior too,
carefully, without hurting nice-0 - to refine all the workloads where
people (have to) use positive or negative nice levels. In any case,
please keep re-testing this so that we can adjust it.
Ingo
--------------------->
commit 7cff8cf61cac15fa29a1ca802826d2bcbca66152
Author: Ingo Molnar <mingo@elte.hu>
Date: Thu Aug 9 11:16:52 2007 +0200
sched: refine negative nice level granularity
refine the granularity of negative nice level tasks: let them
reschedule more often to offset the effect of them consuming
their wait_runtime proportionately slower. (This makes nice-0
task scheduling smoother in the presence of negatively
reniced tasks.)
Signed-off-by: Ingo Molnar <mingo@elte.hu>
diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c
index 7a632c5..e91db32 100644
--- a/kernel/sched_fair.c
+++ b/kernel/sched_fair.c
@@ -222,21 +222,25 @@ niced_granularity(struct sched_entity *curr, unsigned long granularity)
{
u64 tmp;
+ if (likely(curr->load.weight == NICE_0_LOAD))
+ return granularity;
/*
- * Negative nice levels get the same granularity as nice-0:
+ * Positive nice levels get the same granularity as nice-0:
*/
- if (likely(curr->load.weight >= NICE_0_LOAD))
- return granularity;
+ if (likely(curr->load.weight < NICE_0_LOAD)) {
+ tmp = curr->load.weight * (u64)granularity;
+ return (long) (tmp >> NICE_0_SHIFT);
+ }
/*
- * Positive nice level tasks get linearly finer
+ * Negative nice level tasks get linearly finer
* granularity:
*/
- tmp = curr->load.weight * (u64)granularity;
+ tmp = curr->load.inv_weight * (u64)granularity;
/*
* It will always fit into 'long':
*/
- return (long) (tmp >> NICE_0_SHIFT);
+ return (long) (tmp >> WMULT_SHIFT);
}
static inline void
next prev parent reply other threads:[~2007-08-12 4:18 UTC|newest]
Thread overview: 123+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-11 10:44 CFS review Al Boldi
2007-08-12 4:17 ` Ingo Molnar [this message]
2007-08-12 15:27 ` Al Boldi
2007-08-12 15:52 ` Ingo Molnar
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=20070812041736.GA18291@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.