• Frederic Weisbecker's avatar
    vtime: Use consistent clocks among nohz accounting · 45eacc69
    Frederic Weisbecker authored
    While computing the cputime delta of dynticks CPUs,
    we are mixing up clocks of differents natures:
    
    * local_clock() which takes care of unstable clock
    sources and fix these if needed.
    
    * sched_clock() which is the weaker version of
    local_clock(). It doesn't compute any fixup in case
    of unstable source.
    
    If the clock source is stable, those two clocks are the
    same and we can safely compute the difference against
    two random points.
    
    Otherwise it results in random deltas as sched_clock()
    can randomly drift away, back or forward, from local_clock().
    
    As a consequence, some strange behaviour with unstable tsc
    has been observed such as non progressing constant zero cputime.
    (The 'top' command showing no load).
    
    Fix this by only using local_clock(), or its irq safe/remote
    equivalent, in vtime code.
    Reported-by: default avatarMike Galbraith <efault@gmx.de>
    Suggested-by: default avatarMike Galbraith <efault@gmx.de>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Li Zhong <zhong@linux.vnet.ibm.com>
    Cc: Mike Galbraith <efault@gmx.de>
    Signed-off-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    45eacc69
cputime.c 21.3 KB