public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] fix idle ticks in cpu summary line of /proc/stat
@ 2012-03-11 22:26 Martin Schwidefsky
  2012-03-12 12:17 ` Michal Hocko
  0 siblings, 1 reply; 17+ messages in thread
From: Martin Schwidefsky @ 2012-03-11 22:26 UTC (permalink / raw)
  To: Michal Hocko, Thomas Gleixner, linux-kernel

Git commit 09a1d34f8535ecf9 "nohz: Make idle/iowait counter update conditional"
introduced a bug in regard to cpu hotplug. The effect is that the number
of idle ticks in the cpu summary line in /proc/stat is still counting
ticks for offline cpus. 

Reproduction is easy, just start a workload that keeps all cpus busy,
switch off one or more cpus and then watch the idle field in top.
On a dual-core with one cpu 100% busy and one offline cpu you will get
something like this:

%Cpu(s): 48.7 us,  1.3 sy,  0.0 ni, 50.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

The problem is that an offline cpu still has ts->idle_active == 1.
To fix this get_cpu_idle_time_us and get_cpu_iowait_time_us
should check for offline cpus.

Cc: Michal Hocko <mhocko@suse.cz>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel <linux-kernel@vger.kernel.org>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
---
 kernel/time/tick-sched.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/kernel/time/tick-sched.c
+++ b/kernel/time/tick-sched.c
@@ -213,7 +213,7 @@ u64 get_cpu_idle_time_us(int cpu, u64 *l
 	struct tick_sched *ts = &per_cpu(tick_cpu_sched, cpu);
 	ktime_t now, idle;
 
-	if (!tick_nohz_enabled)
+	if (!tick_nohz_enabled || !cpu_online(cpu))
 		return -1;
 
 	now = ktime_get();
@@ -254,7 +254,7 @@ u64 get_cpu_iowait_time_us(int cpu, u64
 	struct tick_sched *ts = &per_cpu(tick_cpu_sched, cpu);
 	ktime_t now, iowait;
 
-	if (!tick_nohz_enabled)
+	if (!tick_nohz_enabled || !cpu_online(cpu))
 		return -1;
 
 	now = ktime_get();


^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2012-07-18 12:22 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-03-11 22:26 [PATCH] fix idle ticks in cpu summary line of /proc/stat Martin Schwidefsky
2012-03-12 12:17 ` Michal Hocko
2012-03-12 14:17   ` Martin Schwidefsky
2012-03-12 14:48     ` Srivatsa S. Bhat
2012-03-12 15:39       ` Michal Hocko
2012-03-12 20:41         ` Martin Schwidefsky
2012-03-13  8:07           ` [PATCH v2] " Michal Hocko
2012-03-13  8:32             ` Srivatsa S. Bhat
2012-07-18 11:52               ` Martin Schwidefsky
2012-07-18 12:21                 ` Srivatsa S. Bhat
2012-03-29 10:42             ` Thomas Gleixner
2012-03-30 10:23               ` Martin Schwidefsky
2012-03-30 10:41                 ` Michal Hocko
2012-03-30 11:01                 ` Srivatsa S. Bhat
2012-03-30 13:58                 ` [tip:timers/core] proc: stats: Use arch_idle_time for idle and iowait times if available tip-bot for Martin Schwidefsky
2012-03-30 22:54                   ` Andrew Morton
2012-04-02  6:51                     ` Martin Schwidefsky

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox