lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
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

Powered by Openwall GNU/*/Linux Powered by OpenVZ