All of lore.kernel.org
 help / color / mirror / Atom feed
From: tip-bot for Brian Silverman <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: tglx@linutronix.de, brian@peloton-tech.com, hpa@zytor.com,
	stable@vger.kernel.org, peterz@infradead.org,
	linux-kernel@vger.kernel.org, mingo@kernel.org
Subject: [tip:sched/core] sched: Fix RLIMIT_RTTIME when PI-boosting to RT
Date: Mon, 23 Mar 2015 05:24:11 -0700	[thread overview]
Message-ID: <tip-746db9443ea57fd9c059f62c4bfbf41cf224fe13@git.kernel.org> (raw)
In-Reply-To: <1424305436-6716-1-git-send-email-brian@peloton-tech.com>

Commit-ID:  746db9443ea57fd9c059f62c4bfbf41cf224fe13
Gitweb:     http://git.kernel.org/tip/746db9443ea57fd9c059f62c4bfbf41cf224fe13
Author:     Brian Silverman <brian@peloton-tech.com>
AuthorDate: Wed, 18 Feb 2015 16:23:56 -0800
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Mon, 23 Mar 2015 10:47:55 +0100

sched: Fix RLIMIT_RTTIME when PI-boosting to RT

When non-realtime tasks get priority-inheritance boosted to a realtime
scheduling class, RLIMIT_RTTIME starts to apply to them. However, the
counter used for checking this (the same one used for SCHED_RR
timeslices) was not getting reset. This meant that tasks running with a
non-realtime scheduling class which are repeatedly boosted to a realtime
one, but never block while they are running realtime, eventually hit the
timeout without ever running for a time over the limit. This patch
resets the realtime timeslice counter when un-PI-boosting from an RT to
a non-RT scheduling class.

I have some test code with two threads and a shared PTHREAD_PRIO_INHERIT
mutex which induces priority boosting and spins while boosted that gets
killed by a SIGXCPU on non-fixed kernels but doesn't with this patch
applied. It happens much faster with a CONFIG_PREEMPT_RT kernel, and
does happen eventually with PREEMPT_VOLUNTARY kernels.

Signed-off-by: Brian Silverman <brian@peloton-tech.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: austin@peloton-tech.com
Cc: <stable@vger.kernel.org>
Link: http://lkml.kernel.org/r/1424305436-6716-1-git-send-email-brian@peloton-tech.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 kernel/sched/core.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index f0f831e..62671f5 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -3034,6 +3034,8 @@ void rt_mutex_setprio(struct task_struct *p, int prio)
 	} else {
 		if (dl_prio(oldprio))
 			p->dl.dl_boosted = 0;
+		if (rt_prio(oldprio))
+			p->rt.timeout = 0;
 		p->sched_class = &fair_sched_class;
 	}
 

      parent reply	other threads:[~2015-03-23 12:25 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-19  0:23 [PATCH] sched: fix RLIMIT_RTTIME when PI-boosting to RT brian
2015-02-19  0:23 ` Brian Silverman
2015-03-10  5:42   ` Ingo Molnar
2015-03-05 17:10 ` Austin Schuh
2015-03-09 17:34   ` Sebastian Andrzej Siewior
2015-03-09 23:29     ` Brian Silverman
2015-03-23 12:24 ` tip-bot for Brian Silverman [this message]

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=tip-746db9443ea57fd9c059f62c4bfbf41cf224fe13@git.kernel.org \
    --to=tipbot@zytor.com \
    --cc=brian@peloton-tech.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=stable@vger.kernel.org \
    --cc=tglx@linutronix.de \
    /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.