Commit 16a6d9be authored by Frederic Weisbecker's avatar Frederic Weisbecker Committed by Ingo Molnar

sched/cputime: Convert guest time accounting to nsecs (u64)

cputime_t is being obsolete and replaced by nsecs units in order to make
internal timestamps less opaque and more granular.
Signed-off-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
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: Stanislaw Gruszka <sgruszka@redhat.com>
Cc: Wanpeng Li <wanpeng.li@hotmail.com>
Link: http://lkml.kernel.org/r/1485832191-26889-6-git-send-email-fweisbec@gmail.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
parent 564b733c
...@@ -402,7 +402,7 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns, ...@@ -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 cmin_flt = 0, cmaj_flt = 0;
unsigned long min_flt = 0, maj_flt = 0; unsigned long min_flt = 0, maj_flt = 0;
cputime_t cutime, cstime, utime, stime; cputime_t cutime, cstime, utime, stime;
cputime_t cgtime, gtime; u64 cgtime, gtime;
unsigned long rsslim = 0; unsigned long rsslim = 0;
char tcomm[sizeof(task->comm)]; char tcomm[sizeof(task->comm)];
unsigned long flags; unsigned long flags;
...@@ -542,8 +542,8 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns, ...@@ -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->rt_priority);
seq_put_decimal_ull(m, " ", task->policy); seq_put_decimal_ull(m, " ", task->policy);
seq_put_decimal_ull(m, " ", delayacct_blkio_ticks(task)); seq_put_decimal_ull(m, " ", delayacct_blkio_ticks(task));
seq_put_decimal_ull(m, " ", cputime_to_clock_t(gtime)); seq_put_decimal_ull(m, " ", nsec_to_clock_t(gtime));
seq_put_decimal_ll(m, " ", cputime_to_clock_t(cgtime)); seq_put_decimal_ll(m, " ", nsec_to_clock_t(cgtime));
if (mm && permitted) { if (mm && permitted) {
seq_put_decimal_ull(m, " ", mm->start_data); seq_put_decimal_ull(m, " ", mm->start_data);
......
...@@ -774,8 +774,8 @@ struct signal_struct { ...@@ -774,8 +774,8 @@ struct signal_struct {
*/ */
seqlock_t stats_lock; seqlock_t stats_lock;
cputime_t utime, stime, cutime, cstime; cputime_t utime, stime, cutime, cstime;
cputime_t gtime; u64 gtime;
cputime_t cgtime; u64 cgtime;
struct prev_cputime prev_cputime; struct prev_cputime prev_cputime;
unsigned long nvcsw, nivcsw, cnvcsw, cnivcsw; unsigned long nvcsw, nivcsw, cnvcsw, cnivcsw;
unsigned long min_flt, maj_flt, cmin_flt, cmaj_flt; unsigned long min_flt, maj_flt, cmin_flt, cmaj_flt;
...@@ -1658,7 +1658,7 @@ struct task_struct { ...@@ -1658,7 +1658,7 @@ struct task_struct {
#ifdef CONFIG_ARCH_HAS_SCALED_CPUTIME #ifdef CONFIG_ARCH_HAS_SCALED_CPUTIME
cputime_t utimescaled, stimescaled; cputime_t utimescaled, stimescaled;
#endif #endif
cputime_t gtime; u64 gtime;
struct prev_cputime prev_cputime; struct prev_cputime prev_cputime;
#ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN #ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN
seqcount_t vtime_seqcount; seqcount_t vtime_seqcount;
...@@ -2254,7 +2254,7 @@ struct task_struct *try_get_task_struct(struct task_struct **ptask); ...@@ -2254,7 +2254,7 @@ struct task_struct *try_get_task_struct(struct task_struct **ptask);
#ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN #ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN
extern void task_cputime(struct task_struct *t, extern void task_cputime(struct task_struct *t,
cputime_t *utime, cputime_t *stime); cputime_t *utime, cputime_t *stime);
extern cputime_t task_gtime(struct task_struct *t); extern u64 task_gtime(struct task_struct *t);
#else #else
static inline void task_cputime(struct task_struct *t, static inline void task_cputime(struct task_struct *t,
cputime_t *utime, cputime_t *stime) cputime_t *utime, cputime_t *stime)
...@@ -2263,7 +2263,7 @@ static inline void task_cputime(struct task_struct *t, ...@@ -2263,7 +2263,7 @@ static inline void task_cputime(struct task_struct *t,
*stime = t->stime; *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; return t->gtime;
} }
......
...@@ -158,7 +158,7 @@ void account_guest_time(struct task_struct *p, cputime_t cputime) ...@@ -158,7 +158,7 @@ void account_guest_time(struct task_struct *p, cputime_t cputime)
/* Add guest time to process. */ /* Add guest time to process. */
p->utime += cputime; p->utime += cputime;
account_group_user_time(p, cputime); account_group_user_time(p, cputime);
p->gtime += cputime; p->gtime += cputime_to_nsecs(cputime);
/* Add guest time to cpustat. */ /* Add guest time to cpustat. */
if (task_nice(p) > 0) { if (task_nice(p) > 0) {
...@@ -824,10 +824,10 @@ void vtime_init_idle(struct task_struct *t, int cpu) ...@@ -824,10 +824,10 @@ void vtime_init_idle(struct task_struct *t, int cpu)
local_irq_restore(flags); local_irq_restore(flags);
} }
cputime_t task_gtime(struct task_struct *t) u64 task_gtime(struct task_struct *t)
{ {
unsigned int seq; unsigned int seq;
cputime_t gtime; u64 gtime;
if (!vtime_accounting_enabled()) if (!vtime_accounting_enabled())
return t->gtime; return t->gtime;
...@@ -837,7 +837,7 @@ cputime_t task_gtime(struct task_struct *t) ...@@ -837,7 +837,7 @@ cputime_t task_gtime(struct task_struct *t)
gtime = t->gtime; gtime = t->gtime;
if (t->vtime_snap_whence == VTIME_SYS && t->flags & PF_VCPU) 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)); } while (read_seqcount_retry(&t->vtime_seqcount, seq));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment