lkml.org 
[lkml]   [2016]   [Nov]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 23/36] cputime: Push time to account_steal_time() in nsecs
    Date
    This is one more step toward converting cputime accounting to pure nsecs.

    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>
    ---
    arch/powerpc/kernel/time.c | 2 +-
    arch/s390/kernel/vtime.c | 2 +-
    include/linux/kernel_stat.h | 2 +-
    kernel/sched/cputime.c | 11 ++++++-----
    4 files changed, 9 insertions(+), 8 deletions(-)

    diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
    index 9b372b1..3efa5a6 100644
    --- a/arch/powerpc/kernel/time.c
    +++ b/arch/powerpc/kernel/time.c
    @@ -361,7 +361,7 @@ void vtime_account_system(struct task_struct *tsk)
    account_system_time(tsk, 0, delta);
    tsk->stimescaled += cputime_to_nsecs(sys_scaled);
    if (stolen)
    - account_steal_time(stolen);
    + account_steal_time(cputime_to_nsecs(stolen));
    }
    EXPORT_SYMBOL_GPL(vtime_account_system);

    diff --git a/arch/s390/kernel/vtime.c b/arch/s390/kernel/vtime.c
    index 0ac0d4c..02c3970 100644
    --- a/arch/s390/kernel/vtime.c
    +++ b/arch/s390/kernel/vtime.c
    @@ -145,7 +145,7 @@ static int do_account_vtime(struct task_struct *tsk, int hardirq_offset)
    steal = S390_lowcore.steal_timer;
    if ((s64) steal > 0) {
    S390_lowcore.steal_timer = 0;
    - account_steal_time(steal);
    + account_steal_time(cputime_to_nsecs(steal));
    }

    return virt_timer_forward(user + system);
    diff --git a/include/linux/kernel_stat.h b/include/linux/kernel_stat.h
    index 6831734..8355f8e 100644
    --- a/include/linux/kernel_stat.h
    +++ b/include/linux/kernel_stat.h
    @@ -80,7 +80,7 @@ static inline unsigned int kstat_cpu_irqs_sum(unsigned int cpu)

    extern void account_user_time(struct task_struct *, u64);
    extern void account_system_time(struct task_struct *, int, cputime_t);
    -extern void account_steal_time(cputime_t);
    +extern void account_steal_time(u64);
    extern void account_idle_time(cputime_t);

    #ifdef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE
    diff --git a/kernel/sched/cputime.c b/kernel/sched/cputime.c
    index f5318d9..e6990a4 100644
    --- a/kernel/sched/cputime.c
    +++ b/kernel/sched/cputime.c
    @@ -207,11 +207,11 @@ void account_system_time(struct task_struct *p, int hardirq_offset,
    * Account for involuntary wait time.
    * @cputime: the cpu time spent in involuntary wait
    */
    -void account_steal_time(cputime_t cputime)
    +void account_steal_time(u64 cputime)
    {
    u64 *cpustat = kcpustat_this_cpu->cpustat;

    - cpustat[CPUTIME_STEAL] += cputime_to_nsecs(cputime);
    + cpustat[CPUTIME_STEAL] += cputime;
    }

    /*
    @@ -239,14 +239,15 @@ static __always_inline cputime_t steal_account_process_time(cputime_t maxtime)
    #ifdef CONFIG_PARAVIRT
    if (static_key_false(&paravirt_steal_enabled)) {
    cputime_t steal_cputime;
    - u64 steal;
    + u64 steal, rounded;

    steal = paravirt_steal_clock(smp_processor_id());
    steal -= this_rq()->prev_steal_time;

    steal_cputime = min(nsecs_to_cputime(steal), maxtime);
    - account_steal_time(steal_cputime);
    - this_rq()->prev_steal_time += cputime_to_nsecs(steal_cputime);
    + rounded = cputime_to_nsecs(steal_cputime);
    + account_steal_time(rounded);
    + this_rq()->prev_steal_time += rounded;

    return steal_cputime;
    }
    --
    2.7.4
    \
     
     \ /
      Last update: 2016-11-17 19:13    [W:3.607 / U:0.372 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site