All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rusty Russell <rusty@rustcorp.com.au>
To: Ashok Raj <ashok.raj@intel.com>
Cc: Anton Blanchard <anton@samba.org>, Andrew Morton <akpm@osdl.org>,
	lkml - Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: ia64 cpu hotplug patch
Date: Wed, 19 May 2004 10:44:50 +1000	[thread overview]
Message-ID: <1084927489.23154.26.camel@bach> (raw)
In-Reply-To: <20040518165803.A32483@unix-os.sc.intel.com>

On Wed, 2004-05-19 at 09:58, Ashok Raj wrote:
> proc_misc.c was changed, since top() uses this to read and
> display stats. With cpuhotplug cpu_possible() represents
> the entire set of NR_CPUS, all these stats with 0 values and
> top gets all dorky about it.
> 
> Maybe the right thing would be to fix the utility instead ?
> 
> Other issue i noticied was that when we have a 4 cpu system, and you 
> remove an intermediate cpu say cpu2, top utility is dorky again. And prints
> "invalid data" in the middle of the output.
> 
> Without the fix to proc_misc, if NR_CPUS is set to 128, top lists all
> 128 cpu stats even if only 4 are present and online, since 
> for_each_cpu reprensents all of it....

OK, well if you're correlating /proc/cpuinfo (online cpus) and
/proc/stat (possible cpus), then I can understand top getting upset.

Perhaps we should only show online cpus in /proc/stat, but the totals
displayed must still include all CPUs I think.

How's this version:

Name: Fix overzealous use of online cpu iterators
Status: Trivial

The IA64 hotplug CPU merge seems to have included some core changes: in
particular the recalc_bh_state() needs to sum for all (including
offline) cpus, since we don't empty the counters on CPU down.  The
totals printed by /proc/stat (the first loop) should include offline
cpus, too (apparently printing out the per-cpu lines for offline cpus
confuses top).

diff -Nru a/fs/buffer.c b/fs/buffer.c
--- b/fs/buffer.c	Fri May 14 19:00:11 2004
+++ a/fs/buffer.c	Thu Apr 22 16:20:51 2004
@@ -3019,7 +2966,7 @@
 	if (__get_cpu_var(bh_accounting).ratelimit++ < 4096)
 		return;
 	__get_cpu_var(bh_accounting).ratelimit = 0;
-	for_each_online_cpu(i)
+	for_each_cpu(i)
 		tot += per_cpu(bh_accounting, i).nr;
 	buffer_heads_over_limit = (tot > max_buffer_heads);
 }
diff -Nru a/fs/proc/proc_misc.c b/fs/proc/proc_misc.c
--- b/fs/proc/proc_misc.c	Fri May 14 23:11:58 2004
+++ a/fs/proc/proc_misc.c	Tue Mar 23 02:05:27 2004
@@ -368,7 +368,7 @@
 	if (wall_to_monotonic.tv_nsec)
 		--jif;
 
-	for_each_online_cpu(i) {
+	for_each_cpu(i) {
 		int j;
 
 		user += kstat_cpu(i).cpustat.user;


-- 
Anyone who quotes me in their signature is an idiot -- Rusty Russell


      reply	other threads:[~2004-05-19  0:45 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20040515191217.GB24541@krispykreme>
     [not found] ` <1084867279.20916.61.camel@bach>
     [not found]   ` <20040518010856.24f116f7.akpm@osdl.org>
     [not found]     ` <20040518181214.GR2151@krispykreme>
2004-05-18 23:45       ` ia64 cpu hotplug patch Rusty Russell
2004-05-18 23:58         ` Ashok Raj
2004-05-19  0:44           ` Rusty Russell [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1084927489.23154.26.camel@bach \
    --to=rusty@rustcorp.com.au \
    --cc=akpm@osdl.org \
    --cc=anton@samba.org \
    --cc=ashok.raj@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.