• Srivatsa Vaddagiri's avatar
    sched: cpu accounting controller (V2) · d842de87
    Srivatsa Vaddagiri authored
    Commit cfb52856 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 (Commit 62d0df64), 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: default avatarBalbir 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: default avatarSrivatsa Vaddagiri <vatsa@linux.vnet.ibm.com>
    Signed-off-by: default avatarBalbir Singh <balbir@linux.vnet.ibm.com>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    d842de87
sched.c 180 KB