[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20110112063543.GD2723@in.ibm.com>
Date: Wed, 12 Jan 2011 12:05:43 +0530
From: Bharata B Rao <bharata@...ux.vnet.ibm.com>
To: Yong Zhang <yong.zhang0@...il.com>
Cc: Mike Galbraith <efault@....de>,
Peter Zijlstra <a.p.zijlstra@...llo.nl>,
Ingo Molnar <mingo@...e.hu>, linux-kernel@...r.kernel.org
Subject: Re: [patch] Re: autogroup: sched_setscheduler() fails
On Wed, Jan 12, 2011 at 01:40:32PM +0800, Yong Zhang wrote:
> On Wed, Jan 12, 2011 at 11:37 AM, Bharata B Rao
> <bharata@...ux.vnet.ibm.com> wrote:
> >> Unless I fscked up, set_task_rq() is the group change. As soon as the
> >> task's class changes, it'll be moved to the root_task_group.
> >
> > Ok, this is what I understand, may be Peter Z can confirm...
> >
> > set_task_rq() just changes the task's cfs_rq and rt_rq as per its
> > task_group(). The normal way to change a task's group is to first
> > change its cgroup pointer (task->cgroups, see cgroup_attach_task())
> > After this you change the runqueues by calling set_task_rq() which
> > now refers to new group's runqueues.
> >
> > In your code, I don't see where you really change task's group. AFAICS,
> > it continues to remain in the same autogroup.
>
> IMHO, task->cgroups will not change when autogroup take effect.
Yes and I believe this is cause for some of the weird semantics I see
with autogroup and cgroups. I am not sure if this has already been
discussed ealier, may be I need to go back and check the archives, but
consider this:
I have cpu cgroup mounted at /cgroup and see that all the tasks in the
system are listed in /cgroup/tasks file.
Now I start a task like this:
# ./while1 &
[1] 2761
and see that this task belongs to root cgroup.
# grep 2761 /cgroup/tasks
2671
But we know that this task really belongs to an autogroup and is not
sitting directly on root_task_group.
# cat /proc/2761/autogroup
/autogroup-49 nice 0
So we have a task in an autogroup (which is a sub group of root_task_group)
but is being shown as part of root_task_group. Is this by design ?
Now say I create a sub cgroup and move this task to it.
# mkdir /cgroup/1
# echo 2671 > /cgroup/1/tasks
So now the task moved to a real cgroup.
# cat /cgroup/1/tasks
2761
But the /proc/2761/autogroup isn't updated. It still shows
/autogroup-49 nice 0
May be this was all discussed earlier as I noted in the beginning, but I find
this semantics a bit unusual.
Regards,
Bharata.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists