• Hiroshi Shimamoto's avatar
    sched/cputime: Fix invalid gtime in proc · 2541117b
    Hiroshi Shimamoto authored
    /proc/stats shows invalid gtime when the thread is running in guest.
    When vtime accounting is not enabled, we cannot get a valid delta.
    The delta is calculated with now - tsk->vtime_snap, but tsk->vtime_snap
    is only updated when vtime accounting is runtime enabled.
    
    This patch makes task_gtime() just return gtime without computing the
    buggy non-existing tickless delta when vtime accounting is not enabled.
    
    Use context_tracking_is_enabled() to check if vtime is accounting on
    some cpu, in which case only we need to check the tickless delta. This
    way we fix the gtime value regression on machines not running nohz full.
    
    The kernel config contains CONFIG_VIRT_CPU_ACCOUNTING_GEN=y and
    CONFIG_NO_HZ_FULL_ALL=n and boot without nohz_full.
    
    I ran and stop a busy loop in VM and see the gtime in host.
    Dump the 43rd field which shows the gtime in every second:
    
    	 # while :; do awk '{print $3" "$43}' /proc/3955/task/4014/stat; sleep 1; done
    	S 4348
    	R 7064566
    	R 7064766
    	R 7064967
    	R 7065168
    	S 4759
    	S 4759
    
    During running busy loop, it returns large value.
    
    After applying this patch, we can see right gtime.
    
    	 # while :; do awk '{print $3" "$43}' /proc/10913/task/10956/stat; sleep 1; done
    	S 5338
    	R 5365
    	R 5465
    	R 5566
    	R 5666
    	S 5726
    	S 5726
    Signed-off-by: default avatarHiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>
    Signed-off-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Chris Metcalf <cmetcalf@ezchip.com>
    Cc: Christoph Lameter <cl@linux.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-2-git-send-email-fweisbec@gmail.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    2541117b
cputime.c 22.5 KB