Re: [RFC/RFT PATCH v3] sched: automated per tty task groups

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Mike Galbraith
Date: Thursday, November 11, 2010 - 3:20 pm

On Thu, 2010-11-11 at 21:27 +0100, Oleg Nesterov wrote:

No, it was just a convenient spot.


Memory leak, will fix.


So avoiding refcounting rcu released task_group backfired.  Crud.


It depends on the patch below from Peter, or manual fixup.

Subject: sched, cgroup: Fixup broken cgroup movement
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
Date: Fri Oct 15 15:24:15 CEST 2010


Reported-by: Dima Zavin <dima@android.com>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
---
 include/linux/sched.h |    2 +-
 kernel/sched.c        |    8 ++++----
 kernel/sched_fair.c   |   25 +++++++++++++++++++------
 3 files changed, 24 insertions(+), 11 deletions(-)

Index: linux-2.6.36.git/kernel/sched.c
===================================================================
--- linux-2.6.36.git.orig/kernel/sched.c
+++ linux-2.6.36.git/kernel/sched.c
@@ -8297,12 +8297,12 @@ void sched_move_task(struct task_struct
 	if (unlikely(running))
 		tsk->sched_class->put_prev_task(rq, tsk);
 
-	set_task_rq(tsk, task_cpu(tsk));
-
 #ifdef CONFIG_FAIR_GROUP_SCHED
-	if (tsk->sched_class->moved_group)
-		tsk->sched_class->moved_group(tsk, on_rq);
+	if (tsk->sched_class->task_move_group)
+		tsk->sched_class->task_move_group(tsk, on_rq);
+	else
 #endif
+		set_task_rq(tsk, task_cpu(tsk));
 
 	if (unlikely(running))
 		tsk->sched_class->set_curr_task(rq);
Index: linux-2.6.36.git/include/linux/sched.h
===================================================================
--- linux-2.6.36.git.orig/include/linux/sched.h
+++ linux-2.6.36.git/include/linux/sched.h
@@ -1072,7 +1072,7 @@ struct sched_class {
 					 struct task_struct *task);
 
 #ifdef CONFIG_FAIR_GROUP_SCHED
-	void (*moved_group) (struct task_struct *p, int on_rq);
+	void (*task_move_group) (struct task_struct *p, int on_rq);
 #endif
 };
 
Index: linux-2.6.36.git/kernel/sched_fair.c
===================================================================
--- linux-2.6.36.git.orig/kernel/sched_fair.c
+++ linux-2.6.36.git/kernel/sched_fair.c
@@ -3824,13 +3824,26 @@ static void set_curr_task_fair(struct rq
 }
 
 #ifdef CONFIG_FAIR_GROUP_SCHED
-static void moved_group_fair(struct task_struct *p, int on_rq)
+static void task_move_group_fair(struct task_struct *p, int on_rq)
 {
-	struct cfs_rq *cfs_rq = task_cfs_rq(p);
-
-	update_curr(cfs_rq);
+	/*
+	 * If the task was not on the rq at the time of this cgroup movement
+	 * it must have been asleep, sleeping tasks keep their ->vruntime
+	 * absolute on their old rq until wakeup (needed for the fair sleeper
+	 * bonus in place_entity()).
+	 *
+	 * If it was on the rq, we've just 'preempted' it, which does convert
+	 * ->vruntime to a relative base.
+	 *
+	 * Make sure both cases convert their relative position when migrating
+	 * to another cgroup's rq. This does somewhat interfere with the
+	 * fair sleeper stuff for the first placement, but who cares.
+	 */
+	if (!on_rq)
+		p->se.vruntime -= cfs_rq_of(&p->se)->min_vruntime;
+	set_task_rq(p, task_cpu(p));
 	if (!on_rq)
-		place_entity(cfs_rq, &p->se, 1);
+		p->se.vruntime += cfs_rq_of(&p->se)->min_vruntime;
 }
 #endif
 
@@ -3882,7 +3895,7 @@ static const struct sched_class fair_sch
 	.get_rr_interval	= get_rr_interval_fair,
 
 #ifdef CONFIG_FAIR_GROUP_SCHED
-	.moved_group		= moved_group_fair,
+	.task_move_group	= task_move_group_fair,
 #endif
 };
 


--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[RFC/RFT PATCH] sched: automated per tty task groups, Mike Galbraith, (Tue Oct 19, 2:16 am)
Re: [RFC/RFT PATCH] sched: automated per tty task groups, Peter Zijlstra, (Tue Oct 19, 2:26 am)
Re: [RFC/RFT PATCH] sched: automated per tty task groups, Peter Zijlstra, (Tue Oct 19, 2:29 am)
Re: [RFC/RFT PATCH] sched: automated per tty task groups, Mike Galbraith, (Tue Oct 19, 2:39 am)
Re: [RFC/RFT PATCH] sched: automated per tty task groups, Mike Galbraith, (Tue Oct 19, 2:42 am)
Re: [RFC/RFT PATCH] sched: automated per tty task groups, Peter Zijlstra, (Tue Oct 19, 2:43 am)
Re: [RFC/RFT PATCH] sched: automated per tty task groups, Mike Galbraith, (Tue Oct 19, 2:46 am)
Re: [RFC/RFT PATCH] sched: automated per tty task groups, Mike Galbraith, (Tue Oct 19, 4:29 am)
Re: [RFC/RFT PATCH] sched: automated per tty task groups, Mike Galbraith, (Tue Oct 19, 6:12 am)
Re: [RFC/RFT PATCH] sched: automated per tty task groups, Linus Torvalds, (Tue Oct 19, 8:28 am)
Re: [RFC/RFT PATCH] sched: automated per tty task groups, Mike Galbraith, (Tue Oct 19, 11:13 am)
Re: [RFC/RFT PATCH] sched: automated per tty task groups, Mike Galbraith, (Tue Oct 19, 11:53 am)
Re: [RFC/RFT PATCH] sched: automated per tty task groups, Markus Trippelsdorf, (Wed Oct 20, 6:55 am)
Re: [RFC/RFT PATCH] sched: automated per tty task groups, Mike Galbraith, (Wed Oct 20, 7:41 am)
Re: [RFC/RFT PATCH] sched: automated per tty task groups, Mike Galbraith, (Thu Oct 21, 12:55 am)
Re: [RFC/RFT PATCH] sched: automated per tty task groups, Mike Galbraith, (Thu Oct 21, 1:11 am)
Re: [RFC/RFT PATCH] sched: automated per tty task groups, Mike Galbraith, (Thu Oct 21, 1:39 am)
Re: [RFC/RFT PATCH] sched: automated per tty task groups, Markus Trippelsdorf, (Thu Oct 21, 1:48 am)
Re: [RFC/RFT PATCH] sched: automated per tty task groups, Mike Galbraith, (Thu Oct 21, 1:52 am)
Re: [RFC/RFT PATCH] sched: automated per tty task groups, Peter Zijlstra, (Thu Oct 21, 3:28 am)
Re: [RFC/RFT PATCH] sched: automated per tty task groups, Mathieu Desnoyers, (Thu Oct 21, 3:51 am)
Re: [RFC/RFT PATCH] sched: automated per tty task groups, Peter Zijlstra, (Thu Oct 21, 4:25 am)
Re: [RFC/RFT PATCH] sched: automated per tty task groups, Mike Galbraith, (Thu Oct 21, 4:27 am)
Re: [RFC/RFT PATCH] sched: automated per tty task groups, Mathieu Desnoyers, (Thu Oct 21, 9:22 am)
Re: [RFC/RFT PATCH] sched: automated per tty task groups, Oleg Nesterov, (Thu Oct 21, 9:29 am)
Re: [RFC/RFT PATCH] sched: automated per tty task groups, Mike Galbraith, (Thu Oct 21, 12:11 pm)
[RFC/RFT PATCH v3] sched: automated per tty task groups, Mike Galbraith, (Tue Oct 26, 12:07 am)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Mike Galbraith, (Tue Oct 26, 12:29 am)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Linus Torvalds, (Thu Nov 11, 11:34 am)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Mike Galbraith, (Thu Nov 11, 12:08 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Markus Trippelsdorf, (Thu Nov 11, 12:15 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Mike Galbraith, (Thu Nov 11, 12:35 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Linus Torvalds, (Thu Nov 11, 12:37 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Markus Trippelsdorf, (Thu Nov 11, 12:38 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Mike Galbraith, (Thu Nov 11, 12:58 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Mike Galbraith, (Thu Nov 11, 3:20 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Mike Galbraith, (Sun Nov 14, 10:19 am)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Markus Trippelsdorf, (Sun Nov 14, 10:49 am)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Mike Galbraith, (Sun Nov 14, 11:10 am)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Linus Torvalds, (Sun Nov 14, 12:28 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Markus Trippelsdorf, (Sun Nov 14, 1:27 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Valdis.Kletnieks, (Mon Nov 15, 3:41 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Lennart Poettering, (Tue Nov 16, 10:03 am)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Linus Torvalds, (Tue Nov 16, 10:11 am)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Mike Galbraith, (Tue Nov 16, 10:42 am)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Peter Zijlstra, (Tue Nov 16, 11:08 am)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Lennart Poettering, (Tue Nov 16, 11:16 am)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Peter Zijlstra, (Tue Nov 16, 11:21 am)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Linus Torvalds, (Tue Nov 16, 11:49 am)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Peter Zijlstra, (Tue Nov 16, 11:59 am)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Peter Zijlstra, (Tue Nov 16, 12:13 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Peter Zijlstra, (Tue Nov 16, 12:25 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Linus Torvalds, (Tue Nov 16, 12:35 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Markus Trippelsdorf, (Tue Nov 16, 12:42 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Peter Zijlstra, (Tue Nov 16, 12:43 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Linus Torvalds, (Tue Nov 16, 12:45 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Linus Torvalds, (Tue Nov 16, 12:49 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Mike Galbraith, (Tue Nov 16, 12:57 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Lennart Poettering, (Tue Nov 16, 1:03 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Lennart Poettering, (Tue Nov 16, 1:05 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Lennart Poettering, (Tue Nov 16, 1:28 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Lennart Poettering, (Tue Nov 16, 1:31 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Lennart Poettering, (Tue Nov 16, 1:33 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Lennart Poettering, (Tue Nov 16, 1:36 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Lennart Poettering, (Tue Nov 16, 1:50 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Lennart Poettering, (Tue Nov 16, 2:08 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Lennart Poettering, (Tue Nov 16, 2:14 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Lennart Poettering, (Tue Nov 16, 2:17 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Lennart Poettering, (Tue Nov 16, 2:19 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Lennart Poettering, (Tue Nov 16, 5:21 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Lennart Poettering, (Wed Nov 17, 8:01 am)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Lennart Poettering, (Wed Nov 17, 3:34 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Lennart Poettering, (Wed Nov 17, 3:45 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Lennart Poettering, (Wed Nov 17, 4:49 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Hans-Peter Jansen, (Thu Nov 18, 3:33 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Samuel Thibault, (Thu Nov 18, 4:12 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Samuel Thibault, (Thu Nov 18, 4:43 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Samuel Thibault, (Thu Nov 18, 5:02 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Samuel Thibault, (Thu Nov 18, 5:07 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Samuel Thibault, (Thu Nov 18, 5:42 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Samuel Thibault, (Thu Nov 18, 5:59 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Samuel Thibault, (Thu Nov 18, 6:23 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Mathieu Desnoyers, (Thu Nov 18, 8:15 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Samuel Thibault, (Fri Nov 19, 2:02 am)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Mathieu Desnoyers, (Fri Nov 19, 5:55 am)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Mathieu Desnoyers, (Fri Nov 19, 6:20 am)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Samuel Thibault, (Fri Nov 19, 7:24 am)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Samuel Thibault, (Fri Nov 19, 7:55 am)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Lennart Poettering, (Fri Nov 19, 9:34 am)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Linus Torvalds, (Fri Nov 19, 10:51 am)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Mike Galbraith, (Fri Nov 19, 12:31 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Linus Torvalds, (Fri Nov 19, 12:48 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Lennart Poettering, (Fri Nov 19, 6:13 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Lennart Poettering, (Fri Nov 19, 6:33 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Lennart Poettering, (Sat Nov 20, 8:41 am)
[PATCH v4] sched: automated per session task groups, Mike Galbraith, (Sat Nov 20, 12:35 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Mike Galbraith, (Sat Nov 20, 12:47 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Mike Galbraith, (Sat Nov 20, 12:51 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Samuel Thibault, (Sat Nov 20, 1:25 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Konstantin Svist, (Sat Nov 20, 3:02 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Samuel Thibault, (Sat Nov 20, 3:15 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Thomas Fjellstrom, (Sat Nov 20, 3:18 pm)
Re: [RFC/RFT PATCH v3] sched: automated per tty task groups, Lennart Poettering, (Mon Nov 22, 12:21 pm)
[tip:sched/core] sched: Add 'autogroup' scheduling feature ..., tip-bot for Mike Gal ..., (Tue Nov 30, 8:39 am)
Re: [PATCH v4] sched: automated per session task groups, Colin Walters, (Sat Dec 4, 10:39 am)
Re: [PATCH v4] sched: automated per session task groups, Linus Torvalds, (Sat Dec 4, 11:33 am)
Re: [PATCH v4] sched: automated per session task groups, Colin Walters, (Sat Dec 4, 1:01 pm)
Re: [PATCH v4] sched: automated per session task groups, Linus Torvalds, (Sat Dec 4, 3:39 pm)
Re: [PATCH v4] sched: automated per session task groups, Colin Walters, (Sat Dec 4, 4:43 pm)
Re: [PATCH v4] sched: automated per session task groups, Linus Torvalds, (Sat Dec 4, 5:31 pm)
Re: [PATCH v4] sched: automated per session task groups, Nikos Chantziaras, (Sun Dec 5, 4:11 am)
Re: [PATCH v4] sched: automated per session task groups, Mike Galbraith, (Sun Dec 5, 4:36 am)
Re: [PATCH v4] sched: automated per session task groups, Colin Walters, (Sun Dec 5, 12:22 pm)
Re: [PATCH v4] sched: automated per session task groups, Linus Torvalds, (Sun Dec 5, 1:47 pm)
Re: [PATCH v4] sched: automated per session task groups, Colin Walters, (Sun Dec 5, 3:47 pm)
Re: [PATCH v4] sched: automated per session task groups, Valdis.Kletnieks, (Sun Dec 5, 5:28 pm)
Re: [PATCH v4] sched: automated per session task groups, Peter Zijlstra, (Tue Dec 7, 11:51 am)
[tip:sched/core] sched, autogroup: Fix potential access to ..., tip-bot for Mike Gal ..., (Tue Jan 4, 7:18 am)