)]}'
{
  "commit": "889976dbcb1218119fdd950fb7819084e37d7d37",
  "tree": "7508706ddb6bcbe0f673aca3744f30f281b17734",
  "parents": [
    "4e4c941c108eff10844d2b441d96dab44f32f424"
  ],
  "author": {
    "name": "Ying Han",
    "email": "yinghan@google.com",
    "time": "Thu May 26 16:25:33 2011 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Thu May 26 17:12:35 2011 -0700"
  },
  "message": "memcg: reclaim memory from nodes in round-robin order\n\nPresently, memory cgroup\u0027s direct reclaim frees memory from the current\nnode.  But this has some troubles.  Usually when a set of threads works in\na cooperative way, they tend to operate on the same node.  So if they hit\nlimits under memcg they will reclaim memory from themselves, damaging the\nactive working set.\n\nFor example, assume 2 node system which has Node 0 and Node 1 and a memcg\nwhich has 1G limit.  After some work, file cache remains and the usages\nare\n\n   Node 0:  1M\n   Node 1:  998M.\n\nand run an application on Node 0, it will eat its foot before freeing\nunnecessary file caches.\n\nThis patch adds round-robin for NUMA and adds equal pressure to each node.\nWhen using cpuset\u0027s spread memory feature, this will work very well.\n\nBut yes, a better algorithm is needed.\n\n[akpm@linux-foundation.org: comment editing]\n[kamezawa.hiroyu@jp.fujitsu.com: fix time comparisons]\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\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": "0629121f2c0b56f3f103d14cec434815f2780ad0",
      "old_mode": 33188,
      "old_path": "include/linux/memcontrol.h",
      "new_id": "16052117131ec7b5e47c9fa4f9508990a5196c4a",
      "new_mode": 33188,
      "new_path": "include/linux/memcontrol.h"
    },
    {
      "type": "modify",
      "old_id": "fc62c714f3b6983411e7ad9223a356a340efd029",
      "old_mode": 33188,
      "old_path": "mm/memcontrol.c",
      "new_id": "1520efd1c7c482152828e8899e80a2240b8608d1",
      "new_mode": 33188,
      "new_path": "mm/memcontrol.c"
    },
    {
      "type": "modify",
      "old_id": "884ae08c16cc298c0b8eaef92baa7b2670c7da4b",
      "old_mode": 33188,
      "old_path": "mm/vmscan.c",
      "new_id": "b0875871820d7384ab5c3b8c81ed17f737b7bde6",
      "new_mode": 33188,
      "new_path": "mm/vmscan.c"
    }
  ]
}
