Quoting Srivatsa Vaddagiri ([EMAIL PROTECTED]):
> Hi,
>       As we were implementing multiple-hierarchy support for CPU
> controller, we hit some oddities in its implementation, partly related
> to current cgroups implementation. Peter and I have been debating on the 
> exact solution and I thought of bringing that discussion to lkml.
> 
> Consider the cgroup filesystem structure for managing cpu resource.
> 
>       # mount -t cgroup -ocpu,cpuacct none /cgroup
>       # mkdir /cgroup/A
>       # mkdir /cgroup/B
>       # mkdir /cgroup/A/a1
> 
> will result in:
> 
>       /cgroup
>          |------<tasks>
>          |------<cpuacct.usage>
>          |------<cpu.shares>
>          |
>          |----[A]
>          |     |----<tasks>
>          |     |----<cpuacct.usage>
>          |     |----<cpu.shares>
>          |     |
>          |     |---[a1]
>          |           |----<tasks>
>          |           |----<cpuacct.usage>
>          |           |----<cpu.shares>
>          |           |
>          |
>          |----[B]
>          |     |----<tasks>
>          |     |----<cpuacct.usage>
>          |     |----<cpu.shares>
>          |     
> 
> 
> Here are some questions that arise in this picture:
> 
> 1. What is the relationship of the task-group in A/tasks with the
>    task-group in A/a1/tasks? In otherwords do they form siblings
>    of the same parent A?
> 
> 2. Somewhat related to the above question, how much resource should the 
>    task-group A/a1/tasks get in relation to A/tasks? Is it 1/2 of parent
>    A's share or 1/(1 + N) of parent A's share (where N = number of tasks
>    in A/tasks)?
> 
> 3. What should A/cpuacct.usage reflect? CPU usage of A/tasks? Or CPU usage
>    of all siblings put together? It can reflect only one, in which case
>    user has to manually derive the other component of the statistics.
> 
> It seems to me that tasks in A/tasks form what can be called the
> "default" child group of A, in which case:
> 
> 4. Modifications to A/cpu.shares should affect the parent or its default
>    child group (A/tasks)?
> 
> To avoid these ambiguities, it may be good if cgroup create this
> "default child group" automatically whenever a cgroup is created?
> Something like below (not the absence of tasks file in some directories
> now):

I didn't think it was actually ambiguous.  /A/cpu.shares will specify
what all tasks under /A and its children (just /A/a1/tass in this
example) get to share, while /A/a1/cpu.share specifies what tasks under
/A/a1/tasks get.  Tasks which are in /A/tasks get whatever is left over,
that is /A/cpu.share - /A/a1/cpu.shares.  /A/cpuacct.usage reflects all
usage by tasks under /A and its children.

> 
> 
>       /cgroup
>          |
>          |------<cpuacct.usage>
>          |------<cpu.shares>
>          |
>          |---[def_child]
>          |     |----<tasks>
>          |     |----<cpuacct.usage>
>          |     |----<cpu.shares>
>          |     |
>          |
>          |----[A]
>          |     |
>          |     |----<cpuacct.usage>
>          |     |----<cpu.shares>
>          |     |
>          |     |---[def_child]
>          |     |     |----<tasks>
>          |     |     |----<cpuacct.usage>
>          |     |     |----<cpu.shares>
>          |     |     |
>          |     | 
>          |     |---[a1]
>          |           |
>          |           |----<cpuacct.usage>
>          |           |----<cpu.shares>
>          |           |
>          |           |---[def_child]
>          |           |       |---<tasks>
>          |           |       |---<cpuacct.usage>
>          |           |       |---<cpu.shares>
>          |           |       |
>          |
>          |----[B]
>          |     |
>          |     |----<cpuacct.usage>
>          |     |----<cpu.shares>
>          |     | 
>          |     |---[def_child]
>          |     |     |----<tasks>
>          |     |     |----<cpuacct.usage>
>          |     |     |----<cpu.shares>
>          |     |     |
> 
> Note that user cannot create subdirectories under def_child with this
> scheme! I am also not sure what impact this will have on other resources
> like cpusets ..
> 
> Thoughts?
> 
> 
> -- 
> Regards,
> vatsa
> _______________________________________________
> Containers mailing list
> [EMAIL PROTECTED]
> https://lists.linux-foundation.org/mailman/listinfo/containers
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to