)]}'
{
  "commit": "bda7bad62bc4c4e0783348e8db51abe094153c56",
  "tree": "c62650a3da656ba18aebe170df7d554158ae5fc5",
  "parents": [
    "1ac101a5d675aca2426c5cd460c73fb95acb8391"
  ],
  "author": {
    "name": "KAMEZAWA Hiroyuki",
    "email": "kamezawa.hiroyu@jp.fujitsu.com",
    "time": "Fri Mar 23 15:02:54 2012 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Fri Mar 23 16:58:42 2012 -0700"
  },
  "message": "procfs: speed up /proc/pid/stat, statm\n\nProcess accounting applications as top, ps visit some files under\n/proc/\u003cpid\u003e.  With seq_put_decimal_ull(), we can optimize /proc/\u003cpid\u003e/stat\nand /proc/\u003cpid\u003e/statm files.\n\nThis patch adds\n  - seq_put_decimal_ll() for signed values.\n  - allow delimiter \u003d\u003d 0.\n  - convert seq_printf() to seq_put_decimal_ull/ll in /proc/stat, statm.\n\nTest result on a system with 2000+ procs.\n\nBefore patch:\n  [kamezawa@bluextal test]$ top -b -n 1 | wc -l\n  2223\n  [kamezawa@bluextal test]$ time top -b -n 1 \u003e /dev/null\n\n  real    0m0.675s\n  user    0m0.044s\n  sys     0m0.121s\n\n  [kamezawa@bluextal test]$ time ps -elf \u003e /dev/null\n\n  real    0m0.236s\n  user    0m0.056s\n  sys     0m0.176s\n\nAfter patch:\n  kamezawa@bluextal ~]$ time top -b -n 1 \u003e /dev/null\n\n  real    0m0.657s\n  user    0m0.052s\n  sys     0m0.100s\n\n  [kamezawa@bluextal ~]$ time ps -elf \u003e /dev/null\n\n  real    0m0.198s\n  user    0m0.050s\n  sys     0m0.145s\n\nConsidering top, ps tend to scan /proc periodically, this will reduce cpu\nconsumption by top/ps to some extent.\n\n[akpm@linux-foundation.org: checkpatch fixes]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c602b8d20f06bf3aa09d97b6114b005671776582",
      "old_mode": 33188,
      "old_path": "fs/proc/array.c",
      "new_id": "fbb53c249086bf074ef273b3c69378e5f1746157",
      "new_mode": 33188,
      "new_path": "fs/proc/array.c"
    },
    {
      "type": "modify",
      "old_id": "7d19816c4cc9799265e6b1b876eb0851bf214b44",
      "old_mode": 33188,
      "old_path": "fs/seq_file.c",
      "new_id": "55c293f7024dd55254dbfcffcdd6da9dbdb8753d",
      "new_mode": 33188,
      "new_path": "fs/seq_file.c"
    },
    {
      "type": "modify",
      "old_id": "5bba42c99448b3438afd7e107281150b7b6d26ed",
      "old_mode": 33188,
      "old_path": "include/linux/seq_file.h",
      "new_id": "54e5ae7f8adc11df121a015c08baa0dcfaeda98c",
      "new_mode": 33188,
      "new_path": "include/linux/seq_file.h"
    }
  ]
}
