From: Jack Steiner <steiner@sgi.com>
To: yinghai@kernel.org, mingo@elte.hu, akpm@linux-foundation.org
Cc: linux-kernel@vger.kernel.org
Subject: Problem: scaling of /proc/stat on large systems
Date: Wed, 29 Sep 2010 07:22:06 -0500 [thread overview]
Message-ID: <20100929122206.GA30317@sgi.com> (raw)
I'm looking for suggestions on how to fix a scaling problem with access to
/proc/stat.
On a large x86_64 system (4096p, 256 nodes, 5530 IRQs), access to
/proc/stat takes too long - more than 12 sec:
# time cat /proc/stat >/dev/null
real 12.630s
user 0.000s
sys 12.629s
This affects top, ps (some variants), w, glibc (sysconf) and much more.
One of the items reported in /proc/stat is a total count of interrupts that
have been received. This calculation requires summation of the interrupts
received on each cpu (kstat_irqs_cpu()).
The data is kept in per-cpu arrays linked to each irq_desc. On a
4096p/5530IRQ system summing this data requires accessing ~90MB.
Deleting the summation of the kstat_irqs_cpu data eliminates the high
access time but is an API breakage that I assume is unacceptible.
Another possibility would be using delayed work (similar to vmstat_update)
that periodically sums the data into a single array. The disadvantage in
this approach is that there would be a delay between receipt of an
interrupt & it's count appearing /proc/stat. Is this an issue for anyone?
Another disadvantage is that it adds to the overall "noise" introduced by
kernel threads.
Is there a better approach to take?
--- jack
next reply other threads:[~2010-09-29 17:22 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-29 12:22 Jack Steiner [this message]
2010-09-30 5:09 ` Problem: scaling of /proc/stat on large systems KAMEZAWA Hiroyuki
2010-10-04 14:34 ` Jack Steiner
2010-10-05 1:36 ` KAMEZAWA Hiroyuki
2010-10-05 8:19 ` KAMEZAWA Hiroyuki
2010-10-08 16:35 ` Jack Steiner
2010-10-12 0:09 ` KAMEZAWA Hiroyuki
2010-10-12 0:22 ` Andrew Morton
2010-10-12 1:02 ` KAMEZAWA Hiroyuki
2010-10-12 2:37 ` [PATCH 1/2] fix slowness of /proc/stat per-cpu IRQ sum calculation on large system by a new counter KAMEZAWA Hiroyuki
2010-10-12 2:39 ` [PATCH 2/2] improve footprint of kstat_irqs() for large system's /proc/stat KAMEZAWA Hiroyuki
2010-10-12 3:05 ` [PATCH 1/2] fix slowness of /proc/stat per-cpu IRQ sum calculation on large system by a new counter Yinghai Lu
2010-10-12 3:11 ` KAMEZAWA Hiroyuki
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=20100929122206.GA30317@sgi.com \
--to=steiner@sgi.com \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=yinghai@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox