forked from Minki/linux
sched/cputime: Push time to account_steal_time() in nsecs
This is one more step toward converting cputime accounting to pure nsecs. Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Fenghua Yu <fenghua.yu@intel.com> Cc: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Rik van Riel <riel@redhat.com> Cc: Stanislaw Gruszka <sgruszka@redhat.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Tony Luck <tony.luck@intel.com> Cc: Wanpeng Li <wanpeng.li@hotmail.com> Link: http://lkml.kernel.org/r/1485832191-26889-23-git-send-email-fweisbec@gmail.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
parent
23244a5c80
commit
be9095ed4f
@ -402,7 +402,7 @@ void vtime_flush(struct task_struct *tsk)
|
||||
account_guest_time(tsk, acct->gtime);
|
||||
|
||||
if (acct->steal_time)
|
||||
account_steal_time(acct->steal_time);
|
||||
account_steal_time(cputime_to_nsecs(acct->steal_time));
|
||||
|
||||
if (acct->idle_time)
|
||||
account_idle_time(acct->idle_time);
|
||||
|
@ -188,7 +188,7 @@ static int do_account_vtime(struct task_struct *tsk)
|
||||
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 + guest + system + hardirq + softirq);
|
||||
|
@ -83,7 +83,7 @@ extern void account_guest_time(struct task_struct *, cputime_t);
|
||||
extern void account_system_time(struct task_struct *, int, cputime_t);
|
||||
extern void account_system_index_time(struct task_struct *, cputime_t,
|
||||
enum cpu_usage_stat);
|
||||
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
|
||||
|
@ -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(¶virt_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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user