Revision 59a32e2ce5eb809967cac4e718bc527beca83c59 authored by Eric Dumazet on 23 March 2012, 22:02:53 UTC, committed by Linus Torvalds on 23 March 2012, 23:58:42 UTC
On a typical 16 cpus machine, "cat /proc/stat" gives more than 4096 bytes,
and is slow :

  # strace -T -o /tmp/STRACE cat /proc/stat | wc -c
  5826
  # grep "cpu " /tmp/STRACE
  read(0, "cpu  1949310 19 2144714 12117253"..., 32768) = 5826 <0.001504>

Thats partly because show_stat() must be called twice since initial
buffer size is too small (4096 bytes for less than 32 possible cpus)

Fix this by :

 1) Taking into account nr_irqs in the initial buffer sizing.

 2) Using ksize() to allow better filling of initial buffer.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Cc: Glauber Costa <glommer@parallels.com>
Cc: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Paul Turner <pjt@google.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Alexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent b908243
History
File Mode Size
basic
coccinelle
dtc
genksyms
kconfig
ksymoops
mod
package
rt-tester
selinux
tracing
.gitignore -rw-r--r-- 96 bytes
Kbuild.include -rw-r--r-- 10.1 KB
Lindent -rwxr-xr-x 460 bytes
Makefile -rw-r--r-- 1.2 KB
Makefile.asm-generic -rw-r--r-- 681 bytes
Makefile.build -rw-r--r-- 14.5 KB
Makefile.clean -rw-r--r-- 3.2 KB
Makefile.fwinst -rw-r--r-- 2.0 KB
Makefile.headersinst -rw-r--r-- 4.0 KB
Makefile.help -rw-r--r-- 68 bytes
Makefile.host -rw-r--r-- 6.5 KB
Makefile.lib -rw-r--r-- 12.1 KB
Makefile.modbuiltin -rw-r--r-- 1.8 KB
Makefile.modinst -rw-r--r-- 1.0 KB
Makefile.modpost -rw-r--r-- 5.1 KB
bin2c.c -rw-r--r-- 702 bytes
bloat-o-meter -rwxr-xr-x 1.8 KB
bootgraph.pl -rw-r--r-- 5.6 KB
checkincludes.pl -rwxr-xr-x 1.8 KB
checkkconfigsymbols.sh -rwxr-xr-x 1.8 KB
checkpatch.pl -rwxr-xr-x 94.9 KB
checkstack.pl -rwxr-xr-x 5.2 KB
checksyscalls.sh -rwxr-xr-x 5.5 KB
checkversion.pl -rwxr-xr-x 1.9 KB
cleanfile -rwxr-xr-x 3.4 KB
cleanpatch -rwxr-xr-x 5.0 KB
coccicheck -rwxr-xr-x 3.1 KB
config -rwxr-xr-x 2.8 KB
conmakehash.c -rw-r--r-- 6.0 KB
decodecode -rwxr-xr-x 1.9 KB
depmod.sh -rwxr-xr-x 1.1 KB
diffconfig -rwxr-xr-x 3.6 KB
docproc.c -rw-r--r-- 14.1 KB
export_report.pl -rw-r--r-- 4.5 KB
extract-ikconfig -rwxr-xr-x 1.6 KB
extract-vmlinux -rwxr-xr-x 1.6 KB
gcc-goto.sh -rw-r--r-- 224 bytes
gcc-version.sh -rw-r--r-- 819 bytes
gcc-x86_32-has-stack-protector.sh -rw-r--r-- 183 bytes
gcc-x86_64-has-stack-protector.sh -rw-r--r-- 199 bytes
gen_initramfs_list.sh -rw-r--r-- 7.4 KB
get_maintainer.pl -rwxr-xr-x 54.0 KB
gfp-translate -rw-r--r-- 1.7 KB
headerdep.pl -rwxr-xr-x 3.5 KB
headers.sh -rwxr-xr-x 530 bytes
headers_check.pl -rw-r--r-- 2.7 KB
headers_install.pl -rw-r--r-- 1.8 KB
kallsyms.c -rw-r--r-- 15.2 KB
kernel-doc -rwxr-xr-x 62.4 KB
makelst -rwxr-xr-x 773 bytes
markup_oops.pl -rw-r--r-- 8.1 KB
mkcompile_h -rwxr-xr-x 2.5 KB
mkmakefile -rw-r--r-- 1.2 KB
mksysmap -rw-r--r-- 1.3 KB
mkuboot.sh -rwxr-xr-x 379 bytes
mkversion -rw-r--r-- 74 bytes
module-common.lds -rw-r--r-- 737 bytes
namespace.pl -rwxr-xr-x 13.0 KB
patch-kernel -rwxr-xr-x 9.8 KB
pnmtologo.c -rw-r--r-- 11.7 KB
profile2linkerlist.pl -rw-r--r-- 375 bytes
recordmcount.c -rw-r--r-- 11.9 KB
recordmcount.h -rw-r--r-- 16.3 KB
recordmcount.pl -rwxr-xr-x 17.5 KB
setlocalversion -rwxr-xr-x 3.9 KB
show_delta -rwxr-xr-x 3.0 KB
tags.sh -rwxr-xr-x 7.4 KB
unifdef.c -rw-r--r-- 34.8 KB
ver_linux -rwxr-xr-x 3.1 KB
xz_wrap.sh -rw-r--r-- 559 bytes

back to top