From: Juri Lelli <juri.lelli@arm.com>
To: Kirill Tkhai <ktkhai@parallels.com>,
Juri Lelli <juri.lelli@gmail.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>, Kirill Tkhai <tkhai@yandex.ru>
Subject: Re: [RFC] sched/dl: Fix preemption checks
Date: Wed, 22 Oct 2014 10:43:41 +0100 [thread overview]
Message-ID: <54477C4D.9040502@arm.com> (raw)
In-Reply-To: <1413909356.19914.128.camel@tkhai>
Hi Kirill,
On 21/10/14 17:35, Kirill Tkhai wrote:
>
> 1)switched_to_dl() check is wrong. We reschedule only
> if rq->curr is deadline task, and we do not reschedule
> if it's a lower priority task. But we must always
> preempt a task of other classes.
>
> 2)dl_task_timer():
> Policy does not change in case of priority inheritance.
> rt_mutex_setprio() changes prio, while policy remains old.
>
> So we lose some balancing logic in dl_task_timer() and
> switched_to_dl() when we check policy instead of priority.
> Boosted task may be rq->curr.
>
> (I didn't change switched_from_dl() because no check is
> necessary there at all).
>
> I've looked at this place(switched_to_dl) several times
> and even fixed this function, but found just now...
> I suppose some performance tests may work better after this.
>
> Completely untested, just RFC.
>
> Juri how about this?
>
I'll have to give it a spin, but it looks good.
Thanks,
- Juri
> Signed-off-by: Kirill Tkhai <ktkhai@parallels.com>
> ---
> kernel/sched/deadline.c | 10 +++++++---
> 1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c
> index 256e577..937a875 100644
> --- a/kernel/sched/deadline.c
> +++ b/kernel/sched/deadline.c
> @@ -532,7 +532,7 @@ static enum hrtimer_restart dl_task_timer(struct hrtimer *timer)
> dl_se->dl_yielded = 0;
> if (task_on_rq_queued(p)) {
> enqueue_task_dl(rq, p, ENQUEUE_REPLENISH);
> - if (task_has_dl_policy(rq->curr))
> + if (dl_task(rq->curr))
> check_preempt_curr_dl(rq, p, 0);
> else
> resched_curr(rq);
> @@ -1607,8 +1607,12 @@ static void switched_to_dl(struct rq *rq, struct task_struct *p)
> /* Only reschedule if pushing failed */
> check_resched = 0;
> #endif /* CONFIG_SMP */
> - if (check_resched && task_has_dl_policy(rq->curr))
> - check_preempt_curr_dl(rq, p, 0);
> + if (check_resched) {
> + if (dl_task(rq->curr))
> + check_preempt_curr_dl(rq, p, 0);
> + else
> + resched_curr(rq);
> + }
> }
> }
>
>
>
>
>
>
next prev parent reply other threads:[~2014-10-22 9:43 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-21 16:35 [RFC] sched/dl: Fix preemption checks Kirill Tkhai
2014-10-22 9:43 ` Juri Lelli [this message]
2014-10-28 11:03 ` [tip:sched/core] " tip-bot for Kirill Tkhai
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=54477C4D.9040502@arm.com \
--to=juri.lelli@arm.com \
--cc=juri.lelli@gmail.com \
--cc=ktkhai@parallels.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=tkhai@yandex.ru \
/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.