lkml.org 
[lkml]   [2007]   [Oct]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 2/2] CFS CGroup: Report usage
    Report CPU usage in CFS Cgroup directories

    Adds a cpu.usage file to the CFS cgroup that reports CPU usage in
    milliseconds for that cgroup's tasks

    This replaces the "example CPU Accounting CGroup subsystem" that
    was merged into mainline last week.

    Signed-off-by: Paul Menage <menage@google.com>

    ---
    kernel/sched.c | 32 +++++++++++++++++++++++++++-----
    1 file changed, 27 insertions(+), 5 deletions(-)

    Index: container-2.6.23-mm1/kernel/sched.c
    ===================================================================
    --- container-2.6.23-mm1.orig/kernel/sched.c
    +++ container-2.6.23-mm1/kernel/sched.c
    @@ -7005,15 +7005,37 @@ static u64 cpu_shares_read_uint(struct c
    return (u64) tg->shares;
    }

    -static struct cftype cpu_shares = {
    - .name = "shares",
    - .read_uint = cpu_shares_read_uint,
    - .write_uint = cpu_shares_write_uint,
    +static u64 cpu_usage_read(struct cgroup *cgrp, struct cftype *cft)
    +{
    + struct task_group *tg = cgroup_tg(cgrp);
    + int i;
    + u64 res = 0;
    + for_each_possible_cpu(i) {
    + unsigned long flags;
    + spin_lock_irqsave(&tg->cfs_rq[i]->rq->lock, flags);
    + res += tg->se[i]->sum_exec_runtime;
    + spin_unlock_irqrestore(&tg->cfs_rq[i]->rq->lock, flags);
    + }
    + /* Convert from ns to ms */
    + do_div(res, 1000000);
    + return res;
    +}
    +
    +static struct cftype cpu_files[] = {
    + {
    + .name = "shares",
    + .read_uint = cpu_shares_read_uint,
    + .write_uint = cpu_shares_write_uint,
    + },
    + {
    + .name = "usage",
    + .read_uint = cpu_usage_read,
    + },
    };

    static int cpu_cgroup_populate(struct cgroup_subsys *ss, struct cgroup *cont)
    {
    - return cgroup_add_file(cont, ss, &cpu_shares);
    + return cgroup_add_files(cont, ss, cpu_files, ARRAY_SIZE(cpu_files));
    }

    struct cgroup_subsys cpu_cgroup_subsys = {
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2007-10-23 02:53    [W:0.025 / U:32.584 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site