All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] sched/deadline: Update total bandwidth when adding new task
@ 2014-02-19  2:56 Steven Rostedt
  2014-02-19 10:07 ` Juri Lelli
  2014-02-19 18:53 ` [PATCH] sched/deadline: Fix overflow to handle period==0 and deadline!=0 Steven Rostedt
  0 siblings, 2 replies; 5+ messages in thread
From: Steven Rostedt @ 2014-02-19  2:56 UTC (permalink / raw)
  To: LKML
  Cc: Peter Zijlstra, Juri Lelli, Ingo Molnar, Linus Torvalds,
	Andrew Morton, Thomas Gleixner

While debugging the crash with the bad nr_running accounting, I hit
another bug where, after running my sched deadline test, I was getting
failures to take a CPU offline. It was giving me a -EBUSY error.

Adding a bunch of trace_printk()s around, I found that the cpu
notifier that called sched_cpu_inactive() was returning a failure. The
overflow value was coming up negative?

Adding more trace_printk()s, I found that task_dead_dl() function was
subtracting the exact amount that was keeping the CPU from going
offline. I then realized that the task_dead_dl() was updating the
total_bw for the task that was going away, but there was nothing that
added to the total_bw when the task came alive. If total_bw is not
zero for a CPU, it will keep that CPU from going offline.

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index b46131e..17f4830 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -3178,6 +3178,7 @@ static void
 __setparam_dl(struct task_struct *p, const struct sched_attr *attr)
 {
 	struct sched_dl_entity *dl_se = &p->dl;
+	struct dl_bw *dl_b = dl_bw_of(task_cpu(p));
 
 	init_dl_task_timer(dl_se);
 	dl_se->dl_runtime = attr->sched_runtime;
@@ -3187,6 +3188,7 @@ __setparam_dl(struct task_struct *p, const struct sched_attr *attr)
 	dl_se->dl_bw = to_ratio(dl_se->dl_period, dl_se->dl_runtime);
 	dl_se->dl_throttled = 0;
 	dl_se->dl_new = 1;
+	__dl_add(dl_b, dl_se->dl_bw);
 }
 
 /* Actually do priority change: must hold pi & rq lock. */

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

end of thread, other threads:[~2014-02-21 20:33 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-02-19  2:56 [PATCH] sched/deadline: Update total bandwidth when adding new task Steven Rostedt
2014-02-19 10:07 ` Juri Lelli
2014-02-19 18:53 ` [PATCH] sched/deadline: Fix overflow to handle period==0 and deadline!=0 Steven Rostedt
2014-02-20  7:47   ` Juri Lelli
2014-02-21 20:31   ` [tip:sched/urgent] sched/deadline: Fix overflow to handle period= =0 " tip-bot for Steven Rostedt

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.