| From: Frederic Weisbecker <fweisbec@gmail.com> |
| Date: Thu, 19 Nov 2015 16:47:30 +0100 |
| Subject: [PATCH] sched/cputime: Clarify vtime symbols and document them |
| |
| VTIME_SLEEPING state happens either when: |
| |
| 1) The task is sleeping and no tickless delta is to be added on the task |
| cputime stats. |
| 2) The CPU isn't running vtime at all, so the same properties of 1) applies. |
| |
| Lets rename the vtime symbol to reflect both states. |
| |
| Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> |
| Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> |
| Cc: Chris Metcalf <cmetcalf@ezchip.com> |
| Cc: Christoph Lameter <cl@linux.com> |
| Cc: Hiroshi Shimamoto <h-shimamoto@ct.jp.nec.com> |
| Cc: Linus Torvalds <torvalds@linux-foundation.org> |
| Cc: Luiz Capitulino <lcapitulino@redhat.com> |
| Cc: Mike Galbraith <efault@gmx.de> |
| Cc: Paul E . McKenney <paulmck@linux.vnet.ibm.com> |
| Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com> |
| Cc: Peter Zijlstra <peterz@infradead.org> |
| Cc: Rik van Riel <riel@redhat.com> |
| Cc: Thomas Gleixner <tglx@linutronix.de> |
| Link: http://lkml.kernel.org/r/1447948054-28668-4-git-send-email-fweisbec@gmail.com |
| Signed-off-by: Ingo Molnar <mingo@kernel.org> |
| Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> |
| --- |
| include/linux/sched.h | 5 ++++- |
| kernel/fork.c | 2 +- |
| kernel/sched/cputime.c | 6 +++--- |
| 3 files changed, 8 insertions(+), 5 deletions(-) |
| |
| --- a/include/linux/sched.h |
| +++ b/include/linux/sched.h |
| @@ -1524,8 +1524,11 @@ struct task_struct { |
| seqlock_t vtime_seqlock; |
| unsigned long long vtime_snap; |
| enum { |
| - VTIME_SLEEPING = 0, |
| + /* Task is sleeping or running in a CPU with VTIME inactive */ |
| + VTIME_INACTIVE = 0, |
| + /* Task runs in userspace in a CPU with VTIME active */ |
| VTIME_USER, |
| + /* Task runs in kernelspace in a CPU with VTIME active */ |
| VTIME_SYS, |
| } vtime_snap_whence; |
| #endif |
| --- a/kernel/fork.c |
| +++ b/kernel/fork.c |
| @@ -1351,7 +1351,7 @@ static struct task_struct *copy_process( |
| #ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN |
| seqlock_init(&p->vtime_seqlock); |
| p->vtime_snap = 0; |
| - p->vtime_snap_whence = VTIME_SLEEPING; |
| + p->vtime_snap_whence = VTIME_INACTIVE; |
| #endif |
| |
| #if defined(SPLIT_RSS_COUNTING) |
| --- a/kernel/sched/cputime.c |
| +++ b/kernel/sched/cputime.c |
| @@ -680,7 +680,7 @@ static cputime_t get_vtime_delta(struct |
| { |
| unsigned long long delta = vtime_delta(tsk); |
| |
| - WARN_ON_ONCE(tsk->vtime_snap_whence == VTIME_SLEEPING); |
| + WARN_ON_ONCE(tsk->vtime_snap_whence == VTIME_INACTIVE); |
| tsk->vtime_snap += delta; |
| |
| /* CHECKME: always safe to convert nsecs to cputime? */ |
| @@ -764,7 +764,7 @@ void vtime_account_idle(struct task_stru |
| void arch_vtime_task_switch(struct task_struct *prev) |
| { |
| write_seqlock(&prev->vtime_seqlock); |
| - prev->vtime_snap_whence = VTIME_SLEEPING; |
| + prev->vtime_snap_whence = VTIME_INACTIVE; |
| write_sequnlock(&prev->vtime_seqlock); |
| |
| write_seqlock(¤t->vtime_seqlock); |
| @@ -829,7 +829,7 @@ fetch_task_cputime(struct task_struct *t |
| *s_dst = *s_src; |
| |
| /* Task is sleeping, nothing to add */ |
| - if (t->vtime_snap_whence == VTIME_SLEEPING || |
| + if (t->vtime_snap_whence == VTIME_INACTIVE || |
| is_idle_task(t)) |
| continue; |
| |