• KAMEZAWA Hiroyuki's avatar
    procfs: speed up /proc/pid/stat, statm · bda7bad6
    KAMEZAWA Hiroyuki authored
    Process accounting applications as top, ps visit some files under
    /proc/<pid>.  With seq_put_decimal_ull(), we can optimize /proc/<pid>/stat
    and /proc/<pid>/statm files.
    
    This patch adds
      - seq_put_decimal_ll() for signed values.
      - allow delimiter == 0.
      - convert seq_printf() to seq_put_decimal_ull/ll in /proc/stat, statm.
    
    Test result on a system with 2000+ procs.
    
    Before patch:
      [kamezawa@bluextal test]$ top -b -n 1 | wc -l
      2223
      [kamezawa@bluextal test]$ time top -b -n 1 > /dev/null
    
      real    0m0.675s
      user    0m0.044s
      sys     0m0.121s
    
      [kamezawa@bluextal test]$ time ps -elf > /dev/null
    
      real    0m0.236s
      user    0m0.056s
      sys     0m0.176s
    
    After patch:
      kamezawa@bluextal ~]$ time top -b -n 1 > /dev/null
    
      real    0m0.657s
      user    0m0.052s
      sys     0m0.100s
    
      [kamezawa@bluextal ~]$ time ps -elf > /dev/null
    
      real    0m0.198s
      user    0m0.050s
      sys     0m0.145s
    
    Considering top, ps tend to scan /proc periodically, this will reduce cpu
    consumption by top/ps to some extent.
    
    [akpm@linux-foundation.org: checkpatch fixes]
    Signed-off-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    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>
    bda7bad6
seq_file.c 19 KB