All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] sched: fix RLIMIT_RTTIME when PI-boosting to RT
@ 2015-02-19  0:23 brian
  2015-02-19  0:23 ` Brian Silverman
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: brian @ 2015-02-19  0:23 UTC (permalink / raw)
  To: mingo, peterz; +Cc: austin, linux-kernel, brian

From: Brian Silverman <brian@peloton-tech.com>

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>
---
I am not subscribed to the list so please CC me on any responses.

 kernel/sched/core.c |    2 ++
 1 file changed, 2 insertions(+)

diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 87b9814..16ad0ed 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -3192,6 +3192,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;
 	}
 
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2015-03-23 12:25 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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:sched/core] sched: Fix " tip-bot for Brian Silverman

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.