d842de871c
Commitcfb5285660
removed a useful feature for us, which provided a cpu accounting resource controller. This feature would be useful if someone wants to group tasks only for accounting purpose and doesnt really want to exercise any control over their cpu consumption. The patch below reintroduces the feature. It is based on Paul Menage's original patch (Commit62d0df6406
), with these differences: - Removed load average information. I felt it needs more thought (esp to deal with SMP and virtualized platforms) and can be added for 2.6.25 after more discussions. - Convert group cpu usage to be nanosecond accurate (as rest of the cfs stats are) and invoke cpuacct_charge() from the respective scheduler classes - Make accounting scalable on SMP systems by splitting the usage counter to be per-cpu - Move the code from kernel/cpu_acct.c to kernel/sched.c (since the code is not big enough to warrant a new file and also this rightly needs to live inside the scheduler. Also things like accessing rq->lock while reading cpu usage becomes easier if the code lived in kernel/sched.c) The patch also modifies the cpu controller not to provide the same accounting information. Tested-by: Balbir Singh <balbir@linux.vnet.ibm.com> Tested the patches on top of 2.6.24-rc3. The patches work fine. Ran some simple tests like cpuspin (spin on the cpu), ran several tasks in the same group and timed them. Compared their time stamps with cpuacct.usage. Signed-off-by: Srivatsa Vaddagiri <vatsa@linux.vnet.ibm.com> Signed-off-by: Balbir Singh <balbir@linux.vnet.ibm.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
40 lines
456 B
C
40 lines
456 B
C
/* Add subsystem definitions of the form SUBSYS(<name>) in this
|
|
* file. Surround each one by a line of comment markers so that
|
|
* patches don't collide
|
|
*/
|
|
|
|
/* */
|
|
|
|
/* */
|
|
|
|
#ifdef CONFIG_CPUSETS
|
|
SUBSYS(cpuset)
|
|
#endif
|
|
|
|
/* */
|
|
|
|
#ifdef CONFIG_CGROUP_DEBUG
|
|
SUBSYS(debug)
|
|
#endif
|
|
|
|
/* */
|
|
|
|
#ifdef CONFIG_CGROUP_NS
|
|
SUBSYS(ns)
|
|
#endif
|
|
|
|
/* */
|
|
|
|
#ifdef CONFIG_FAIR_CGROUP_SCHED
|
|
SUBSYS(cpu_cgroup)
|
|
#endif
|
|
|
|
/* */
|
|
|
|
#ifdef CONFIG_CGROUP_CPUACCT
|
|
SUBSYS(cpuacct)
|
|
#endif
|
|
|
|
/* */
|
|
|