On Tue, May 31, 2016 at 01:55:49PM +0200, Vincent Guittot wrote: > Hi Yuyang, > > On 31 May 2016 at 00:32, Yuyang Du <yuyang...@intel.com> wrote: > > Vincent reported that the first task to a new task group's cfs_rq will > > be attached in attach_task_cfs_rq() and once more when it is enqueued > > (see https://lkml.org/lkml/2016/5/25/388). > > > > Actually, it is worse, attach_task_cfs_rq() is invoked for new task even > > way before the new task is initiated in init_entity_runnable_average(). > > > > Solve this by avoiding attach as well as detach new task in > > task_move_group_fair(). To do it, we need to know whether the task > > is forked or not, so we pass this info all the way from sched_move_task() > > to attach_task_cfs_rq(). > > I have tested your patch and I can't the spurious detach > /attach_task_cfs_rq anymore > so you can add my tested-by. >
Could someone update the Changelog to better explain the whole callchain. Because a quick look seems to suggest something like: copy_process() sched_fork() ... cgroup_post_fork() ss->fork() := cpu_cgroup_fork() Which seems to suggest init_entity_runnable_average() is placed wrong and should live in sched_fork() ? Or am I not getting it.. ?