lkml.org 
[lkml]   [2017]   [Jan]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 06/37] cputime: Convert guest time accounting to nsecs
    Date
    cputime_t is being obsolete and replaced by nsecs units in order to make
    internal timestamps less opaque and more granular.

    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: Fenghua Yu <fenghua.yu@intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Stanislaw Gruszka <sgruszka@redhat.com>
    Cc: Wanpeng Li <wanpeng.li@hotmail.com>
    Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
    ---
    fs/proc/array.c | 6 +++---
    include/linux/sched.h | 10 +++++-----
    kernel/sched/cputime.c | 8 ++++----
    3 files changed, 12 insertions(+), 12 deletions(-)

    diff --git a/fs/proc/array.c b/fs/proc/array.c
    index 51a4213..25b54cf 100644
    --- a/fs/proc/array.c
    +++ b/fs/proc/array.c
    @@ -402,7 +402,7 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
    unsigned long cmin_flt = 0, cmaj_flt = 0;
    unsigned long min_flt = 0, maj_flt = 0;
    cputime_t cutime, cstime, utime, stime;
    - cputime_t cgtime, gtime;
    + u64 cgtime, gtime;
    unsigned long rsslim = 0;
    char tcomm[sizeof(task->comm)];
    unsigned long flags;
    @@ -542,8 +542,8 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
    seq_put_decimal_ull(m, " ", task->rt_priority);
    seq_put_decimal_ull(m, " ", task->policy);
    seq_put_decimal_ull(m, " ", delayacct_blkio_ticks(task));
    - seq_put_decimal_ull(m, " ", cputime_to_clock_t(gtime));
    - seq_put_decimal_ll(m, " ", cputime_to_clock_t(cgtime));
    + seq_put_decimal_ull(m, " ", nsec_to_clock_t(gtime));
    + seq_put_decimal_ll(m, " ", nsec_to_clock_t(cgtime));

    if (mm && permitted) {
    seq_put_decimal_ull(m, " ", mm->start_data);
    diff --git a/include/linux/sched.h b/include/linux/sched.h
    index 195f919..7d268ce 100644
    --- a/include/linux/sched.h
    +++ b/include/linux/sched.h
    @@ -774,8 +774,8 @@ struct signal_struct {
    */
    seqlock_t stats_lock;
    cputime_t utime, stime, cutime, cstime;
    - cputime_t gtime;
    - cputime_t cgtime;
    + u64 gtime;
    + u64 cgtime;
    struct prev_cputime prev_cputime;
    unsigned long nvcsw, nivcsw, cnvcsw, cnivcsw;
    unsigned long min_flt, maj_flt, cmin_flt, cmaj_flt;
    @@ -1658,7 +1658,7 @@ struct task_struct {
    #ifdef CONFIG_ARCH_HAS_SCALED_CPUTIME
    cputime_t utimescaled, stimescaled;
    #endif
    - cputime_t gtime;
    + u64 gtime;
    struct prev_cputime prev_cputime;
    #ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN
    seqcount_t vtime_seqcount;
    @@ -2254,7 +2254,7 @@ struct task_struct *try_get_task_struct(struct task_struct **ptask);
    #ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN
    extern void task_cputime(struct task_struct *t,
    cputime_t *utime, cputime_t *stime);
    -extern cputime_t task_gtime(struct task_struct *t);
    +extern u64 task_gtime(struct task_struct *t);
    #else
    static inline void task_cputime(struct task_struct *t,
    cputime_t *utime, cputime_t *stime)
    @@ -2263,7 +2263,7 @@ static inline void task_cputime(struct task_struct *t,
    *stime = t->stime;
    }

    -static inline cputime_t task_gtime(struct task_struct *t)
    +static inline u64 task_gtime(struct task_struct *t)
    {
    return t->gtime;
    }
    diff --git a/kernel/sched/cputime.c b/kernel/sched/cputime.c
    index 61e2709..8bcd98e 100644
    --- a/kernel/sched/cputime.c
    +++ b/kernel/sched/cputime.c
    @@ -158,7 +158,7 @@ void account_guest_time(struct task_struct *p, cputime_t cputime)
    /* Add guest time to process. */
    p->utime += cputime;
    account_group_user_time(p, cputime);
    - p->gtime += cputime;
    + p->gtime += cputime_to_nsecs(cputime);

    /* Add guest time to cpustat. */
    if (task_nice(p) > 0) {
    @@ -824,10 +824,10 @@ void vtime_init_idle(struct task_struct *t, int cpu)
    local_irq_restore(flags);
    }

    -cputime_t task_gtime(struct task_struct *t)
    +u64 task_gtime(struct task_struct *t)
    {
    unsigned int seq;
    - cputime_t gtime;
    + u64 gtime;

    if (!vtime_accounting_enabled())
    return t->gtime;
    @@ -837,7 +837,7 @@ cputime_t task_gtime(struct task_struct *t)

    gtime = t->gtime;
    if (t->vtime_snap_whence == VTIME_SYS && t->flags & PF_VCPU)
    - gtime += vtime_delta(t);
    + gtime += cputime_to_nsecs(vtime_delta(t));

    } while (read_seqcount_retry(&t->vtime_seqcount, seq));

    --
    2.7.4
    \
     
     \ /
      Last update: 2017-01-22 19:21    [W:2.290 / U:0.232 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site