From: Hillf Danton <dhillf@gmail.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Steven Rostedt <rostedt@goodmis.org>,
Yong Zhang <yong.zhang0@gmail.com>,
LKML <linux-kernel@vger.kernel.org>, Ingo Molnar <mingo@elte.hu>,
Mike Galbraith <efault@gmx.de>
Subject: [PATCH resend] sched: correct how RT task is picked
Date: Thu, 19 May 2011 20:49:04 +0800 [thread overview]
Message-ID: <BANLkTinbFTdr3ckV86CHBTYoYQQkE3eCsg@mail.gmail.com> (raw)
In-Reply-To: <1305732047.2466.7176.camel@twins>
When picking RT task for given runqueue and CPU, if CPU is less than
zero, then the check for task's CPU affinity is bypassed, which
creates incorrect result if the number of CPUs for the task to run is
bigger than one.
And lets check the case that CPU is not less than zero, if CPU is in
the mask of cpus_allowed and if CPU == rq->cpu, incorrect result could
also be reached if the number of CPUs for the task to run is not
bigger than one.
On the other hand, if CPU is in the mask of cpus_allowed and if CPU !=
rq->cpu, checking nr_cpus_allowed is overwork since it is computed
based on cpus_allowed as seen in set_cpus_allowed_rt().
In the patch the checks for both CPU and nr_cpus_allowed are removed
for correct results in the case that CPU is different from rq->cpu and
in the case that CPU is not.
Signed-off-by: Hillf Danton <dhillf@gmail.com>
Acked-by: Steven Rostedt <rostedt@goodmis.org>
---
--- a/kernel/sched_rt.c 2011-04-27 11:48:50.000000000 +0800
+++ b/kernel/sched_rt.c 2011-05-19 20:05:46.000000000 +0800
@@ -1149,11 +1149,8 @@ static void deactivate_task(struct rq *r
static int pick_rt_task(struct rq *rq, struct task_struct *p, int cpu)
{
- if (!task_running(rq, p) &&
- (cpu < 0 || cpumask_test_cpu(cpu, &p->cpus_allowed)) &&
- (p->rt.nr_cpus_allowed > 1))
- return 1;
- return 0;
+ return !task_running(rq, p) &&
+ cpumask_test_cpu(cpu, &p->cpus_allowed);
}
/* Return the second highest RT task, NULL otherwise */
next prev parent reply other threads:[~2011-05-19 12:49 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-10 13:04 [PATCH] " Hillf Danton
2011-05-11 8:43 ` Yong Zhang
2011-05-11 13:44 ` Hillf Danton
2011-05-12 12:06 ` Yong Zhang
2011-05-18 1:38 ` Steven Rostedt
2011-05-18 2:31 ` Yong Zhang
2011-05-18 13:19 ` Hillf Danton
2011-05-18 13:24 ` Steven Rostedt
2011-05-18 14:46 ` Hillf Danton
2011-05-18 15:15 ` Steven Rostedt
2011-05-18 15:20 ` Peter Zijlstra
2011-05-19 12:49 ` Hillf Danton [this message]
2011-05-19 1:41 ` Yong Zhang
2011-05-19 1:44 ` Yong Zhang
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=BANLkTinbFTdr3ckV86CHBTYoYQQkE3eCsg@mail.gmail.com \
--to=dhillf@gmail.com \
--cc=efault@gmx.de \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=yong.zhang0@gmail.com \
/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®