• Eric Dumazet's avatar
    proc: speed up /proc/stat handling · 59a32e2c
    Eric Dumazet authored
    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: default avatarEric 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: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    59a32e2c
stat.c 5.38 KB