linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [BUG] vmstat reports no interrupts
@ 2012-01-14  0:01 Russell King - ARM Linux
  2012-01-14  0:19 ` Tony Luck
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Russell King - ARM Linux @ 2012-01-14  0:01 UTC (permalink / raw)
  To: Glauber Costa, KAMEZAWA Hiroyuki, Peter Zijlstra, Ingo Molnar
  Cc: linux-kernel

Running a recent kernel, I'm seeing no interrupt activity being reported
by vmstat on my platforms.  Investigating, it seems to be caused by
this patch merged during the current merge window:

commit 3292beb340c76884427faa1f5d6085719477d889
Author: Glauber Costa <glommer@parallels.com>
Date:   Mon Nov 28 14:45:17 2011 -0200

    sched/accounting: Change cpustat fields to an array

    This patch changes fields in cpustat from a structure, to an
    u64 array. Math gets easier, and the code is more flexible.

    Signed-off-by: Glauber Costa <glommer@parallels.com>
    Reviewed-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Paul Tuner <pjt@google.com>
    Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Link: http://lkml.kernel.org/r/1322498719-2255-2-git-send-email-glommer@parallels.com
    Signed-off-by: Ingo Molnar <mingo@elte.hu>

This patch modifies show_stat() thusly:

        u64 sum = 0;

        for_each_possible_cpu(i) {
...
-               sum += kstat_cpu_irqs_sum(i);
-               sum += arch_irq_stat_cpu(i);

where 'sum' is the first value displayed on /proc/stat's intr line.
However, this file still contains:

#ifndef arch_irq_stat_cpu
#define arch_irq_stat_cpu(cpu) 0
#endif
#ifndef arch_irq_stat
#define arch_irq_stat() 0
#endif
#ifndef arch_idle_time
#define arch_idle_time(cpu) 0
#endif

at the top, and otherwise doesn't reference arch_irq_stat_cpu() anymore.

Although x86 (and only x86) implements arch_irq_stat(), this doesn't
return the total number of interrupts on the system.  Therefore, I
conclude that the same bug that I'm seeing on ARM should be visible on
every other arch, including x86.

I think this commit wasn't meant to delete these.  The patch below
restores vmstat's original behaviour for me.  Please confirm this fix
and submit upstream.

8<====
From: Russell King <rmk+kernel@arm.linux.org.uk>
proc: fix /proc/stat intr sum

Commit 3292beb340c7688 (sched/accounting: Change cpustat fields to an array)
deleted the code which provides us with the sum of all interrupts in
the system, causing vmstat to report zero interrupts occuring in the
system.  Fix this by restoring the code.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Tested-by: Russell King <rmk+kernel@arm.linux.org.uk> [on ARM]
---
 fs/proc/stat.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/fs/proc/stat.c b/fs/proc/stat.c
index d76ca6a..121f77c 100644
--- a/fs/proc/stat.c
+++ b/fs/proc/stat.c
@@ -77,6 +77,8 @@ static int show_stat(struct seq_file *p, void *v)
 		steal += kcpustat_cpu(i).cpustat[CPUTIME_STEAL];
 		guest += kcpustat_cpu(i).cpustat[CPUTIME_GUEST];
 		guest_nice += kcpustat_cpu(i).cpustat[CPUTIME_GUEST_NICE];
+		sum += kstat_cpu_irqs_sum(i);
+		sum += arch_irq_stat_cpu(i);
 
 		for (j = 0; j < NR_SOFTIRQS; j++) {
 			unsigned int softirq_stat = kstat_softirqs_cpu(j, i);


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

* Re: [BUG] vmstat reports no interrupts
  2012-01-14  0:01 [BUG] vmstat reports no interrupts Russell King - ARM Linux
@ 2012-01-14  0:19 ` Tony Luck
  2012-01-14  0:26 ` Steven Rostedt
  2012-01-19 20:40 ` Eric Dumazet
  2 siblings, 0 replies; 6+ messages in thread
From: Tony Luck @ 2012-01-14  0:19 UTC (permalink / raw)
  To: Russell King - ARM Linux
  Cc: Glauber Costa, KAMEZAWA Hiroyuki, Peter Zijlstra, Ingo Molnar,
	linux-kernel

On Fri, Jan 13, 2012 at 4:01 PM, Russell King - ARM Linux
<linux@arm.linux.org.uk> wrote:
> +               sum += kstat_cpu_irqs_sum(i);
> +               sum += arch_irq_stat_cpu(i);

It was broken on ia64 too - this patch fixes it.

Tested-by: Tony Luck <tony.luck@intel.com>

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

* Re: [BUG] vmstat reports no interrupts
  2012-01-14  0:01 [BUG] vmstat reports no interrupts Russell King - ARM Linux
  2012-01-14  0:19 ` Tony Luck
@ 2012-01-14  0:26 ` Steven Rostedt
  2012-01-19 20:40 ` Eric Dumazet
  2 siblings, 0 replies; 6+ messages in thread
From: Steven Rostedt @ 2012-01-14  0:26 UTC (permalink / raw)
  To: Russell King - ARM Linux
  Cc: Glauber Costa, KAMEZAWA Hiroyuki, Peter Zijlstra, Ingo Molnar,
	linux-kernel

On Sat, Jan 14, 2012 at 12:01:01AM +0000, Russell King - ARM Linux wrote:
> From: Russell King <rmk+kernel@arm.linux.org.uk>
> proc: fix /proc/stat intr sum
> 
> Commit 3292beb340c7688 (sched/accounting: Change cpustat fields to an array)
> deleted the code which provides us with the sum of all interrupts in
> the system, causing vmstat to report zero interrupts occuring in the
> system.  Fix this by restoring the code.

I booted up latest Linus tree on my PPC64 and saw the same thing. I
tried out this patch and it did fix the problem. I also tested v3.2 and
it did not have the issue.

v3.2:
intr 44685 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1698 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 240 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 119 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 5649 1484 0 0


Latest Linus:
intr 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1716 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 244 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 167 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 5303 1493 0 0


Latest Linus with patch:
intr 42454 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1701 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 245 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 175 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 5731 1535 0 0

Tested-by: Steven Rostedt <rostedt@goodmis.org>

-- Steve

> 
> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
> Tested-by: Russell King <rmk+kernel@arm.linux.org.uk> [on ARM]

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

* Re: [BUG] vmstat reports no interrupts
  2012-01-14  0:01 [BUG] vmstat reports no interrupts Russell King - ARM Linux
  2012-01-14  0:19 ` Tony Luck
  2012-01-14  0:26 ` Steven Rostedt
@ 2012-01-19 20:40 ` Eric Dumazet
  2012-01-21  8:09   ` Ingo Molnar
  2 siblings, 1 reply; 6+ messages in thread
From: Eric Dumazet @ 2012-01-19 20:40 UTC (permalink / raw)
  To: Russell King - ARM Linux
  Cc: Glauber Costa, KAMEZAWA Hiroyuki, Peter Zijlstra, Ingo Molnar,
	linux-kernel

Le samedi 14 janvier 2012 à 00:01 +0000, Russell King - ARM Linux a
écrit :
> From: Russell King <rmk+kernel@arm.linux.org.uk>
> proc: fix /proc/stat intr sum
> 
> Commit 3292beb340c7688 (sched/accounting: Change cpustat fields to an array)
> deleted the code which provides us with the sum of all interrupts in
> the system, causing vmstat to report zero interrupts occuring in the
> system.  Fix this by restoring the code.
> 
> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
> Tested-by: Russell King <rmk+kernel@arm.linux.org.uk> [on ARM]
> ---
>  fs/proc/stat.c |    2 ++
>  1 files changed, 2 insertions(+), 0 deletions(-)
> 
> diff --git a/fs/proc/stat.c b/fs/proc/stat.c
> index d76ca6a..121f77c 100644
> --- a/fs/proc/stat.c
> +++ b/fs/proc/stat.c
> @@ -77,6 +77,8 @@ static int show_stat(struct seq_file *p, void *v)
>  		steal += kcpustat_cpu(i).cpustat[CPUTIME_STEAL];
>  		guest += kcpustat_cpu(i).cpustat[CPUTIME_GUEST];
>  		guest_nice += kcpustat_cpu(i).cpustat[CPUTIME_GUEST_NICE];
> +		sum += kstat_cpu_irqs_sum(i);
> +		sum += arch_irq_stat_cpu(i);
>  
>  		for (j = 0; j < NR_SOFTIRQS; j++) {
>  			unsigned int softirq_stat = kstat_softirqs_cpu(j, i);
> 

Any news on this patch being accepted and pushed to Linus ?

Acked-by: Eric Dumazet <eric.dumazet@gmail.com>

Thanks



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

* Re: [BUG] vmstat reports no interrupts
  2012-01-19 20:40 ` Eric Dumazet
@ 2012-01-21  8:09   ` Ingo Molnar
  2012-01-21  9:20     ` Eric Dumazet
  0 siblings, 1 reply; 6+ messages in thread
From: Ingo Molnar @ 2012-01-21  8:09 UTC (permalink / raw)
  To: Eric Dumazet
  Cc: Russell King - ARM Linux, Glauber Costa, KAMEZAWA Hiroyuki,
	Peter Zijlstra, linux-kernel


* Eric Dumazet <eric.dumazet@gmail.com> wrote:

> Le samedi 14 janvier 2012 à 00:01 +0000, Russell King - ARM Linux a
> écrit :
> > From: Russell King <rmk+kernel@arm.linux.org.uk>
> > proc: fix /proc/stat intr sum
> > 
> > Commit 3292beb340c7688 (sched/accounting: Change cpustat fields to an array)
> > deleted the code which provides us with the sum of all interrupts in
> > the system, causing vmstat to report zero interrupts occuring in the
> > system.  Fix this by restoring the code.
> > 
> > Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
> > Tested-by: Russell King <rmk+kernel@arm.linux.org.uk> [on ARM]
> > ---
> >  fs/proc/stat.c |    2 ++
> >  1 files changed, 2 insertions(+), 0 deletions(-)
> > 
> > diff --git a/fs/proc/stat.c b/fs/proc/stat.c
> > index d76ca6a..121f77c 100644
> > --- a/fs/proc/stat.c
> > +++ b/fs/proc/stat.c
> > @@ -77,6 +77,8 @@ static int show_stat(struct seq_file *p, void *v)
> >  		steal += kcpustat_cpu(i).cpustat[CPUTIME_STEAL];
> >  		guest += kcpustat_cpu(i).cpustat[CPUTIME_GUEST];
> >  		guest_nice += kcpustat_cpu(i).cpustat[CPUTIME_GUEST_NICE];
> > +		sum += kstat_cpu_irqs_sum(i);
> > +		sum += arch_irq_stat_cpu(i);
> >  
> >  		for (j = 0; j < NR_SOFTIRQS; j++) {
> >  			unsigned int softirq_stat = kstat_softirqs_cpu(j, i);
> > 
> 
> Any news on this patch being accepted and pushed to Linus ?

It should be in v3.3-rc1.

Thanks,

	Ingo

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

* Re: [BUG] vmstat reports no interrupts
  2012-01-21  8:09   ` Ingo Molnar
@ 2012-01-21  9:20     ` Eric Dumazet
  0 siblings, 0 replies; 6+ messages in thread
From: Eric Dumazet @ 2012-01-21  9:20 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Russell King - ARM Linux, Glauber Costa, KAMEZAWA Hiroyuki,
	Peter Zijlstra, linux-kernel

Le samedi 21 janvier 2012 à 09:09 +0100, Ingo Molnar a écrit :
> * Eric Dumazet <eric.dumazet@gmail.com> wrote:
> > 
> > Any news on this patch being accepted and pushed to Linus ?
> 
> It should be in v3.3-rc1.

Indeed it is, I saw that yesterday.

Thanks



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

end of thread, other threads:[~2012-01-21  9:20 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-01-14  0:01 [BUG] vmstat reports no interrupts Russell King - ARM Linux
2012-01-14  0:19 ` Tony Luck
2012-01-14  0:26 ` Steven Rostedt
2012-01-19 20:40 ` Eric Dumazet
2012-01-21  8:09   ` Ingo Molnar
2012-01-21  9:20     ` Eric Dumazet

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).