[lkml]   [2011]   [Jan]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [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
    > <> 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

    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

    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.

    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2011-01-12 07:39    [W:0.030 / U:37.880 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site