From: Mike Galbraith <efault@gmx.de> To: Oleg Nesterov <oleg@redhat.com> Cc: Linus Torvalds <torvalds@linux-foundation.org>, Peter Zijlstra <a.p.zijlstra@chello.nl>, Mathieu Desnoyers <mathieu.desnoyers@efficios.com>, Ingo Molnar <mingo@elte.hu>, LKML <linux-kernel@vger.kernel.org>, Markus Trippelsdorf <markus@trippelsdorf.de> Subject: Re: [RFC/RFT PATCH v3] sched: automated per tty task groups Date: Thu, 11 Nov 2010 15:20:00 -0700 [thread overview] Message-ID: <1289514000.21413.204.camel@maggy.simson.net> (raw) In-Reply-To: <20101111202703.GA16282@redhat.com> On Thu, 2010-11-11 at 21:27 +0100, Oleg Nesterov wrote: > I didn't read this patch carefully (yet) but, > > On 11/11, Mike Galbraith wrote: > > > > @@ -2569,6 +2576,7 @@ void sched_fork(struct task_struct *p, i > > * Silence PROVE_RCU. > > */ > > rcu_read_lock(); > > + autogroup_fork(p); > > Surely this doesn't need rcu. No, it was just a convenient spot. > But the real problem is that copy_process() can fail after that, > and in this case we have the unbalanced kref_get(). Memory leak, will fix. > > +++ linux-2.6.36.git/kernel/exit.c > > @@ -174,6 +174,7 @@ repeat: > > write_lock_irq(&tasklist_lock); > > tracehook_finish_release_task(p); > > __exit_signal(p); > > + sched_autogroup_exit(p); > > This doesn't look right. Note that "p" can run/sleep after that > (or in parallel), set_task_rq() can use the freed ->autogroup. So avoiding refcounting rcu released task_group backfired. Crud. > Btw, I can't apply this patch... 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 };
next prev parent reply other threads:[~2010-11-11 22:20 UTC|newest]
Thread overview: 264+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-19 9:16 [RFC/RFT PATCH] " Mike Galbraith
2010-10-19 9:26 ` Peter Zijlstra
2010-10-19 9:39 ` Mike Galbraith
2010-10-19 9:43 ` Peter Zijlstra
2010-10-19 9:46 ` Mike Galbraith
2010-10-21 7:55 ` Mike Galbraith
2010-10-21 10:28 ` Peter Zijlstra
2010-10-19 9:29 ` Peter Zijlstra
2010-10-19 9:42 ` Mike Galbraith
2010-10-19 11:29 ` Mike Galbraith
2010-10-19 11:56 ` Ingo Molnar
2010-10-19 13:12 ` Mike Galbraith
2010-10-19 15:28 ` Linus Torvalds
2010-10-19 18:13 ` Mike Galbraith
2010-10-19 18:53 ` Mike Galbraith
2010-10-20 2:56 ` Ingo Molnar
2010-10-21 8:11 ` Mike Galbraith
2010-10-21 8:31 ` Ingo Molnar
2010-10-21 8:39 ` Mike Galbraith
2010-10-21 8:48 ` Markus Trippelsdorf
2010-10-21 8:52 ` Mike Galbraith
[not found] ` <20101021115723.GA1587@arch.trippelsdorf.de>
2010-10-21 16:22 ` Mathieu Desnoyers
2010-10-21 10:51 ` Mathieu Desnoyers
2010-10-21 11:25 ` Peter Zijlstra
2010-10-21 16:29 ` Oleg Nesterov
2010-10-21 19:11 ` Mike Galbraith
2010-10-26 7:07 ` [RFC/RFT PATCH v3] " Mike Galbraith
2010-10-26 7:29 ` Mike Galbraith
2010-10-26 15:47 ` Linus Torvalds
2010-10-27 1:58 ` Mike Galbraith
2010-11-11 15:26 ` Mike Galbraith
2010-11-11 18:04 ` Ingo Molnar
2010-11-11 18:34 ` Linus Torvalds
2010-11-11 19:08 ` Mike Galbraith
2010-11-11 19:37 ` Linus Torvalds
2010-11-11 20:29 ` Oleg Nesterov
2010-11-11 19:15 ` Markus Trippelsdorf
2010-11-11 19:35 ` Mike Galbraith
2010-11-11 19:38 ` Markus Trippelsdorf
2010-11-11 19:58 ` Mike Galbraith
2010-11-11 20:27 ` Oleg Nesterov
2010-11-11 22:20 ` Mike Galbraith [this message]
2010-11-12 18:12 ` Oleg Nesterov
2010-11-13 11:42 ` Mike Galbraith
2010-11-14 17:19 ` Mike Galbraith
2010-11-14 17:49 ` Markus Trippelsdorf
2010-11-14 18:10 ` Mike Galbraith
2010-11-14 19:28 ` Linus Torvalds
2010-11-14 20:20 ` Linus Torvalds
2010-11-14 20:27 ` Markus Trippelsdorf
2010-11-14 20:48 ` Linus Torvalds
2010-11-14 23:43 ` Mike Galbraith
2010-11-15 0:15 ` Linus Torvalds
2010-11-15 0:26 ` Linus Torvalds
2010-11-15 1:13 ` Mike Galbraith
2010-11-15 3:12 ` Linus Torvalds
2010-11-15 14:00 ` Mike Galbraith
2010-11-15 8:57 ` Peter Zijlstra
2010-11-15 11:32 ` Mike Galbraith
2010-11-15 11:46 ` Mike Galbraith
2010-11-15 12:57 ` Oleg Nesterov
2010-11-15 21:25 ` Mike Galbraith
2010-11-15 22:48 ` Peter Zijlstra
2010-11-16 1:56 ` Vivek Goyal
2010-11-16 2:18 ` Linus Torvalds
2010-11-17 8:06 ` Balbir Singh
2010-11-16 14:02 ` Mike Galbraith
2010-11-16 14:11 ` Peter Zijlstra
2010-11-16 14:47 ` Dhaval Giani
2010-11-16 17:03 ` Lennart Poettering
2010-11-16 17:11 ` Linus Torvalds
2010-11-16 18:16 ` Lennart Poettering
2010-11-16 18:21 ` Peter Zijlstra
2010-11-16 18:33 ` Paul Menage
2010-11-16 18:55 ` david
2010-11-16 18:59 ` Peter Zijlstra
2010-11-16 19:09 ` Vivek Goyal
2010-11-16 19:13 ` Peter Zijlstra
2010-11-16 19:22 ` Vivek Goyal
2010-11-16 19:25 ` Peter Zijlstra
2010-11-16 19:40 ` Vivek Goyal
2010-11-16 19:43 ` Peter Zijlstra
2010-11-16 19:49 ` Linus Torvalds
2010-11-16 19:35 ` Linus Torvalds
2010-11-16 20:03 ` Lennart Poettering
2010-11-16 20:12 ` Peter Zijlstra
2010-11-16 18:49 ` Linus Torvalds
2010-11-16 19:03 ` Pekka Enberg
2010-11-16 20:21 ` Kay Sievers
2010-11-16 20:35 ` Linus Torvalds
2010-11-16 20:31 ` Lennart Poettering
2010-11-17 13:21 ` Stephen Clark
2010-11-16 19:08 ` david
2010-11-16 20:33 ` Lennart Poettering
2010-11-16 20:38 ` Linus Torvalds
2010-11-16 21:14 ` Lennart Poettering
2010-11-17 13:23 ` Stephen Clark
2010-11-18 22:33 ` Hans-Peter Jansen
2010-11-18 23:12 ` Samuel Thibault
2010-11-18 23:35 ` Mike Galbraith
2010-11-18 23:43 ` Samuel Thibault
2010-11-18 23:51 ` Linus Torvalds
2010-11-19 0:02 ` Samuel Thibault
2010-11-19 0:07 ` Samuel Thibault
2010-11-19 11:57 ` Peter Zijlstra
2010-11-19 14:24 ` Samuel Thibault
2010-11-19 14:43 ` Peter Zijlstra
2010-11-19 14:55 ` Samuel Thibault
2010-11-19 0:42 ` Linus Torvalds
2010-11-19 0:59 ` Samuel Thibault
2010-11-19 1:11 ` Linus Torvalds
2010-11-19 1:12 ` Mike Galbraith
2010-11-19 1:23 ` Samuel Thibault
2010-11-19 2:28 ` Mike Galbraith
2010-11-19 9:02 ` Samuel Thibault
2010-11-19 11:49 ` Peter Zijlstra
2010-11-19 12:19 ` Peter Zijlstra
2010-11-19 12:55 ` Mathieu Desnoyers
2010-11-19 13:00 ` Peter Zijlstra
2010-11-19 13:20 ` Mathieu Desnoyers
2010-11-19 12:31 ` Paul Menage
2010-11-19 12:51 ` Peter Zijlstra
2010-11-19 13:03 ` Mike Galbraith
2010-11-19 12:38 ` Mike Galbraith
2010-11-22 6:22 ` Balbir Singh
2010-11-18 23:29 ` Mike Galbraith
2010-11-16 20:44 ` Pekka Enberg
2010-11-16 19:27 ` Dhaval Giani
2010-11-16 19:42 ` Diego Calleja
2010-11-16 19:45 ` Linus Torvalds
2010-11-16 19:56 ` Paul Menage
2010-11-16 20:17 ` Vivek Goyal
2010-11-16 20:50 ` Lennart Poettering
2010-11-20 22:16 ` Mika Laitio
2010-11-21 0:19 ` Mike Galbraith
2010-11-16 20:28 ` Lennart Poettering
2010-11-16 20:46 ` David Miller
2010-11-16 21:08 ` Lennart Poettering
2010-11-16 21:14 ` David Miller
2010-11-16 20:52 ` Alan Cox
2010-11-16 21:08 ` Linus Torvalds
2010-11-16 21:19 ` Lennart Poettering
2010-11-16 23:39 ` Ted Ts'o
2010-11-17 0:21 ` Lennart Poettering
2010-11-17 2:06 ` Ted Ts'o
2010-11-17 14:57 ` Vivek Goyal
2010-11-17 15:01 ` Lennart Poettering
2010-11-17 17:16 ` John Stoffel
2010-11-19 5:20 ` Andev
2010-11-19 11:59 ` Peter Zijlstra
2010-11-19 13:03 ` Ben Gamari
2010-11-19 13:07 ` Theodore Tso
2010-11-19 16:29 ` David Miller
2010-11-19 16:34 ` Lennart Poettering
2010-11-19 16:43 ` David Miller
2010-11-19 17:51 ` Linus Torvalds
2010-11-19 19:12 ` Ben Gamari
2010-11-19 19:48 ` Linus Torvalds
2010-11-20 1:33 ` Lennart Poettering
2010-11-19 20:38 ` Paul Menage
2010-11-20 1:13 ` Lennart Poettering
2010-11-20 4:25 ` Balbir Singh
2010-11-20 15:41 ` Lennart Poettering
2010-11-22 6:24 ` Balbir Singh
2010-11-22 19:21 ` Lennart Poettering
2010-11-19 19:31 ` Mike Galbraith
2010-11-19 13:21 ` Peter Zijlstra
2010-11-17 22:34 ` Lennart Poettering
2010-11-17 22:37 ` Peter Zijlstra
2010-11-17 22:45 ` Lennart Poettering
2010-11-17 22:52 ` Peter Zijlstra
2010-11-18 15:00 ` Stephen Clark
2010-11-17 23:49 ` Lennart Poettering
2010-11-16 21:17 ` Lennart Poettering
2010-11-17 20:59 ` James Cloos
2010-11-22 6:16 ` Balbir Singh
2010-11-16 18:57 ` Stephen Clark
2010-11-16 19:12 ` Vivek Goyal
2010-11-16 19:57 ` Mike Galbraith
2010-11-16 20:36 ` Lennart Poettering
2010-11-16 19:42 ` Markus Trippelsdorf
2010-11-16 18:08 ` Peter Zijlstra
2010-11-16 18:56 ` Stephen Clark
2010-11-16 20:05 ` Lennart Poettering
2010-11-16 20:15 ` Peter Zijlstra
2010-11-19 0:35 ` H. Peter Anvin
2010-11-19 0:42 ` Samuel Thibault
2010-11-19 3:15 ` Mathieu Desnoyers
[not found] ` <20101120090955.GB12043@balbir.in.ibm.com>
2010-11-20 19:47 ` Mike Galbraith
2010-11-16 13:04 ` Oleg Nesterov
2010-11-16 14:18 ` Mike Galbraith
2010-11-16 15:03 ` Oleg Nesterov
2010-11-16 15:41 ` Mike Galbraith
2010-11-16 17:28 ` Ingo Molnar
2010-11-16 17:42 ` Mike Galbraith
2010-11-20 19:35 ` [PATCH v4] sched: automated per session " Mike Galbraith
2010-11-30 15:39 ` [tip:sched/core] sched: Add 'autogroup' scheduling feature: " tip-bot for Mike Galbraith
2010-12-15 17:50 ` Oleg Nesterov
2010-12-16 7:53 ` Mike Galbraith
2010-12-16 14:09 ` Mike Galbraith
2010-12-16 15:07 ` Oleg Nesterov
2011-01-04 14:18 ` [tip:sched/core] sched, autogroup: Fix potential access to freed memory tip-bot for Mike Galbraith
2010-12-20 13:08 ` [tip:sched/core] sched: Add 'autogroup' scheduling feature: automated per session task groups Bharata B Rao
2010-12-20 13:19 ` Peter Zijlstra
2010-12-20 15:46 ` Bharata B Rao
2010-12-20 15:53 ` Bharata B Rao
2010-12-21 8:33 ` Peter Zijlstra
2010-12-20 16:39 ` Mike Galbraith
2010-12-21 5:04 ` Bharata B Rao
2010-12-21 5:50 ` Mike Galbraith
2010-12-04 17:39 ` [PATCH v4] sched: " Colin Walters
2010-12-04 18:33 ` Linus Torvalds
2010-12-04 20:01 ` Colin Walters
2010-12-04 22:39 ` Linus Torvalds
2010-12-04 23:43 ` Colin Walters
2010-12-05 0:31 ` Linus Torvalds
2010-12-05 7:47 ` Ray Lee
2010-12-05 19:22 ` Colin Walters
2010-12-05 20:47 ` Linus Torvalds
2010-12-05 22:47 ` Colin Walters
2010-12-05 22:58 ` Jesper Juhl
2010-12-05 23:05 ` Jesper Juhl
2010-12-07 18:51 ` Peter Zijlstra
2010-12-05 10:18 ` Con Kolivas
2010-12-05 11:36 ` Mike Galbraith
2010-12-05 20:58 ` Ingo Molnar
2010-12-04 23:31 ` david
2010-12-05 11:11 ` Nikos Chantziaras
2010-12-05 15:12 ` [PATCH v4] Regression: " Alan Cox
2010-12-05 16:16 ` Florian Mickler
2010-12-05 19:48 ` Alan Cox
2010-12-06 16:03 ` Florian Mickler
2010-12-05 16:59 ` Mike Galbraith
2010-12-05 17:09 ` Mike Galbraith
2010-12-05 17:15 ` Mike Galbraith
2010-12-06 0:28 ` [PATCH v4] " Valdis.Kletnieks
2010-11-16 14:01 ` [RFC/RFT PATCH v3] sched: automated per tty " Peter Zijlstra
2010-11-16 14:19 ` Mike Galbraith
2010-11-17 1:31 ` Kyle McMartin
2010-11-17 1:50 ` Linus Torvalds
2010-11-17 1:56 ` Kyle McMartin
2010-11-17 2:14 ` Mike Galbraith
2010-11-15 0:02 ` Mike Galbraith
2010-11-15 22:41 ` Valdis.Kletnieks
2010-11-15 23:25 ` Linus Torvalds
2010-11-20 19:33 ` Jesper Juhl
2010-11-20 19:51 ` Mike Galbraith
2010-11-20 20:37 ` Jesper Juhl
2010-11-20 22:02 ` Konstantin Svist
2010-11-20 22:15 ` Samuel Thibault
2010-11-20 22:18 ` Thomas Fjellstrom
2010-11-20 20:25 ` Samuel Thibault
2010-11-15 23:46 ` Mike Galbraith
2010-11-15 23:50 ` Linus Torvalds
2010-11-16 0:04 ` Mike Galbraith
2010-11-16 1:18 ` Linus Torvalds
2010-11-16 1:55 ` Paul Menage
2010-11-16 12:58 ` Mike Galbraith
2010-11-16 18:25 ` Paul Menage
2010-11-16 13:59 ` Peter Zijlstra
2010-11-16 14:26 ` Mike Galbraith
2010-10-21 11:27 ` [RFC/RFT PATCH] " Mike Galbraith
2010-10-20 13:55 ` Markus Trippelsdorf
2010-10-20 14:41 ` Mike Galbraith
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=1289514000.21413.204.camel@maggy.simson.net \
--to=efault@gmx.de \
--cc=a.p.zijlstra@chello.nl \
--cc=linux-kernel@vger.kernel.org \
--cc=markus@trippelsdorf.de \
--cc=mathieu.desnoyers@efficios.com \
--cc=mingo@elte.hu \
--cc=oleg@redhat.com \
--cc=torvalds@linux-foundation.org \
/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 a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®