lkml.org 
[lkml]   [2017]   [Aug]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/3] cpuacct: Introduce cgroup_account_cputime[_field]()
    Date
    Introduce cgroup_account_cputime[_field]() which wrap cpuacct_charge()
    and cgroup_account_field(). This doesn't introduce any functional
    changes and will be used to add cgroup basic resource accounting.

    Signed-off-by: Tejun Heo <tj@kernel.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    ---
    include/linux/cgroup.h | 38 ++++++++++++++++++++++++++++++++++++++
    kernel/sched/cpuacct.h | 17 -----------------
    kernel/sched/cputime.c | 2 +-
    kernel/sched/deadline.c | 2 +-
    kernel/sched/fair.c | 2 +-
    kernel/sched/rt.c | 2 +-
    kernel/sched/sched.h | 1 -
    kernel/sched/stop_task.c | 2 +-
    8 files changed, 43 insertions(+), 23 deletions(-)
    delete mode 100644 kernel/sched/cpuacct.h

    diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h
    index 085056e..f395e02 100644
    --- a/include/linux/cgroup.h
    +++ b/include/linux/cgroup.h
    @@ -22,6 +22,7 @@
    #include <linux/nsproxy.h>
    #include <linux/user_namespace.h>
    #include <linux/refcount.h>
    +#include <linux/kernel_stat.h>

    #include <linux/cgroup-defs.h>

    @@ -675,6 +676,43 @@ static inline bool task_under_cgroup_hierarchy(struct task_struct *task,
    #endif /* !CONFIG_CGROUPS */

    /*
    + * Basic resource stats.
    + */
    +#ifdef CONFIG_CGROUPS
    +
    +#ifdef CONFIG_CGROUP_CPUACCT
    +void cpuacct_charge(struct task_struct *tsk, u64 cputime);
    +void cpuacct_account_field(struct task_struct *tsk, int index, u64 val);
    +#else
    +static inline void cpuacct_charge(struct task_struct *tsk, u64 cputime) {}
    +static inline void cpuacct_account_field(struct task_struct *tsk, int index,
    + u64 val) {}
    +#endif
    +
    +static inline void cgroup_account_cputime(struct task_struct *task,
    + u64 delta_exec)
    +{
    + cpuacct_charge(task, delta_exec);
    +}
    +
    +static inline void cgroup_account_cputime_field(struct task_struct *task,
    + enum cpu_usage_stat index,
    + u64 delta_exec)
    +{
    + cpuacct_account_field(task, index, delta_exec);
    +}
    +
    +#else /* CONFIG_CGROUPS */
    +
    +static inline void cgroup_account_cputime(struct task_struct *task,
    + u64 delta_exec) {}
    +static inline void cgroup_account_cputime_field(struct task_struct *task,
    + enum cpu_usage_stat index,
    + u64 delta_exec) {}
    +
    +#endif /* CONFIG_CGROUPS */
    +
    +/*
    * sock->sk_cgrp_data handling. For more info, see sock_cgroup_data
    * definition in cgroup-defs.h.
    */
    diff --git a/kernel/sched/cpuacct.h b/kernel/sched/cpuacct.h
    deleted file mode 100644
    index ba72807..0000000
    --- a/kernel/sched/cpuacct.h
    +++ /dev/null
    @@ -1,17 +0,0 @@
    -#ifdef CONFIG_CGROUP_CPUACCT
    -
    -extern void cpuacct_charge(struct task_struct *tsk, u64 cputime);
    -extern void cpuacct_account_field(struct task_struct *tsk, int index, u64 val);
    -
    -#else
    -
    -static inline void cpuacct_charge(struct task_struct *tsk, u64 cputime)
    -{
    -}
    -
    -static inline void
    -cpuacct_account_field(struct task_struct *tsk, int index, u64 val)
    -{
    -}
    -
    -#endif
    diff --git a/kernel/sched/cputime.c b/kernel/sched/cputime.c
    index 3a8bfcc..d13149d 100644
    --- a/kernel/sched/cputime.c
    +++ b/kernel/sched/cputime.c
    @@ -109,7 +109,7 @@ static inline void task_group_account_field(struct task_struct *p, int index,
    */
    __this_cpu_add(kernel_cpustat.cpustat[index], tmp);

    - cpuacct_account_field(p, index, tmp);
    + cgroup_account_cputime_field(p, index, tmp);
    }

    /*
    diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c
    index a84299f..4d5119f 100644
    --- a/kernel/sched/deadline.c
    +++ b/kernel/sched/deadline.c
    @@ -1145,7 +1145,7 @@ static void update_curr_dl(struct rq *rq)
    account_group_exec_runtime(curr, delta_exec);

    curr->se.exec_start = rq_clock_task(rq);
    - cpuacct_charge(curr, delta_exec);
    + cgroup_account_cputime(curr, delta_exec);

    sched_rt_avg_update(rq, delta_exec);

    diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
    index c95880e..9b2e0b6 100644
    --- a/kernel/sched/fair.c
    +++ b/kernel/sched/fair.c
    @@ -864,7 +864,7 @@ static void update_curr(struct cfs_rq *cfs_rq)
    struct task_struct *curtask = task_of(curr);

    trace_sched_stat_runtime(curtask, delta_exec, curr->vruntime);
    - cpuacct_charge(curtask, delta_exec);
    + cgroup_account_cputime(curtask, delta_exec);
    account_group_exec_runtime(curtask, delta_exec);
    }

    diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
    index 45caf93..ed6e95d 100644
    --- a/kernel/sched/rt.c
    +++ b/kernel/sched/rt.c
    @@ -979,7 +979,7 @@ static void update_curr_rt(struct rq *rq)
    account_group_exec_runtime(curr, delta_exec);

    curr->se.exec_start = rq_clock_task(rq);
    - cpuacct_charge(curr, delta_exec);
    + cgroup_account_cputime(curr, delta_exec);

    sched_rt_avg_update(rq, delta_exec);

    diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
    index eeef1a3..35812d779 100644
    --- a/kernel/sched/sched.h
    +++ b/kernel/sched/sched.h
    @@ -36,7 +36,6 @@

    #include "cpupri.h"
    #include "cpudeadline.h"
    -#include "cpuacct.h"

    #ifdef CONFIG_SCHED_DEBUG
    # define SCHED_WARN_ON(x) WARN_ONCE(x, #x)
    diff --git a/kernel/sched/stop_task.c b/kernel/sched/stop_task.c
    index 9f69fb6..ec0bb5a 100644
    --- a/kernel/sched/stop_task.c
    +++ b/kernel/sched/stop_task.c
    @@ -71,7 +71,7 @@ static void put_prev_task_stop(struct rq *rq, struct task_struct *prev)
    account_group_exec_runtime(curr, delta_exec);

    curr->se.exec_start = rq_clock_task(rq);
    - cpuacct_charge(curr, delta_exec);
    + cgroup_account_cputime(curr, delta_exec);
    }

    static void task_tick_stop(struct rq *rq, struct task_struct *curr, int queued)
    --
    2.9.3
    \
     
     \ /
      Last update: 2017-08-11 18:38    [W:8.344 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site