From: Peter Zijlstra <a.p.zijlstra@chello.nl>
To: Ingo Molnar <mingo@elte.hu>
Cc: Mike Galbraith <efault@gmx.de>, Brian Rogers <brian@xyzw.org>,
linux-kernel@vger.kernel.org
Subject: Re: [BUG] How to get real-time priority using idle priority
Date: Thu, 15 Jan 2009 14:16:51 +0100 [thread overview]
Message-ID: <1232025411.8870.49.camel@laptop> (raw)
In-Reply-To: <20090115125451.GB21839@elte.hu>
If you then fold this on top we have 3 patches, alas not along the lines
that would have been pretty:
- update_min_vruntime fix
- SCHED_IDLE weight change
- SCHED_IDLE vs SCHED_OTHER isolation
But I guess that's life.
---
Subject: sched: fix update_min_vruntime
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
Date: Thu Jan 15 14:13:28 CET 2009
OK, so we have 1 running task A (which is obviously curr and the tree is
equally obviously empty).
A nicely chugs along, doing its thing, carrying min_vruntime along as it
goes.
Then some whacko speed freak SCHED_IDLE task gets inserted due to SMP
balancing, which is very likely far right, in that case
update_curr
update_min_vruntime
cfs_rq->rb_leftmost := true (the crazy task sitting in a tree)
vruntime = se->vruntime
and voila, min_vruntime is waaay right of where it ought to be.
OK, so why did I write it like that to begin with...
Aah, yes.
Say we've just dequeued current
schedule
deactivate_task(prev)
dequeue_entity
update_min_vruntime
Then we'll set
vruntime = cfs_rq->min_vruntime;
we find !cfs_rq->curr, but do find someone in the tree. Then we _must_
do vruntime = se->vruntime, because
vruntime = min_vruntime(vruntime := cfs_rq->min_vruntime, se->vruntime)
will not advance vruntime, and cause lags the other way around (which we
fixed with that initial patch: 1af5f730fc1bf7c62ec9fb2d307206e18bf40a69
(sched: more accurate min_vruntime accounting).
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Tested-by: Mike Galbraith <efault@gmx.de>
Acked-by: Mike Galbraith <efault@gmx.de>
---
kernel/sched_fair.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
Index: linux-2.6/kernel/sched_fair.c
===================================================================
--- linux-2.6.orig/kernel/sched_fair.c
+++ linux-2.6/kernel/sched_fair.c
@@ -283,7 +283,10 @@ static void update_min_vruntime(struct c
struct sched_entity,
run_node);
- vruntime = min_vruntime(vruntime, se->vruntime);
+ if (!cfs_rq->curr)
+ vruntime = se->vruntime;
+ else
+ vruntime = min_vruntime(vruntime, se->vruntime);
}
cfs_rq->min_vruntime = max_vruntime(cfs_rq->min_vruntime, vruntime);
next prev parent reply other threads:[~2009-01-15 13:17 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-11 10:58 [BUG] How to get real-time priority using idle priority Brian Rogers
2009-01-12 5:09 ` Mike Galbraith
2009-01-12 13:03 ` Mike Galbraith
2009-01-12 13:14 ` Ingo Molnar
2009-01-12 15:23 ` Mike Galbraith
2009-01-12 15:24 ` Ingo Molnar
2009-01-13 1:05 ` Brian Rogers
2009-01-13 2:58 ` Mike Galbraith
2009-01-14 5:13 ` Mike Galbraith
2009-01-14 5:31 ` Ingo Molnar
2009-01-14 6:02 ` Mike Galbraith
2009-01-14 7:35 ` Ingo Molnar
2009-01-15 9:28 ` Mike Galbraith
2009-01-15 10:14 ` Peter Zijlstra
2009-01-15 10:30 ` Mike Galbraith
2009-01-15 11:37 ` Mike Galbraith
2009-01-15 11:41 ` Peter Zijlstra
2009-01-15 12:54 ` Ingo Molnar
2009-01-15 13:05 ` Peter Zijlstra
2009-01-15 13:15 ` Ingo Molnar
2009-01-15 13:16 ` Peter Zijlstra [this message]
2009-01-15 12:07 ` Brian Rogers
2009-01-12 20:46 ` [patch take 2] " Mike Galbraith
2009-01-12 20:50 ` Mike Galbraith
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=1232025411.8870.49.camel@laptop \
--to=a.p.zijlstra@chello.nl \
--cc=brian@xyzw.org \
--cc=efault@gmx.de \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
/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.