)]}'
{
  "commit": "8fce4d8e3b9e3cf47cc8afeb6077e22ab795d989",
  "tree": "4930be5756f7a3893717d38f443f6261f11a1f60",
  "parents": [
    "7b61fcda8a640bb87be23f9f09c1f24357b5c6e1"
  ],
  "author": {
    "name": "Christoph Lameter",
    "email": "clameter@engr.sgi.com",
    "time": "Thu Mar 09 17:33:54 2006 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@g5.osdl.org",
    "time": "Thu Mar 09 19:47:38 2006 -0800"
  },
  "message": "[PATCH] slab: Node rotor for freeing alien caches and remote per cpu pages.\n\nThe cache reaper currently tries to free all alien caches and all remote\nper cpu pages in each pass of cache_reap.  For a machines with large number\nof nodes (such as Altix) this may lead to sporadic delays of around ~10ms.\nInterrupts are disabled while reclaiming creating unacceptable delays.\n\nThis patch changes that behavior by adding a per cpu reap_node variable.\nInstead of attempting to free all caches, we free only one alien cache and\nthe per cpu pages from one remote node.  That reduces the time spend in\ncache_reap.  However, doing so will lengthen the time it takes to\ncompletely drain all remote per cpu pagesets and all alien caches.  The\ntime needed will grow with the number of nodes in the system.  All caches\nare drained when they overflow their respective capacity.  So the drawback\nhere is only that a bit of memory may be wasted for awhile longer.\n\nDetails:\n\n1. Rename drain_remote_pages to drain_node_pages to allow the specification\n   of the node to drain of pcp pages.\n\n2. Add additional functions init_reap_node, next_reap_node for NUMA\n   that manage a per cpu reap_node counter.\n\n3. Add a reap_alien function that reaps only from the current reap_node.\n\nFor us this seems to be a critical issue.  Holdoffs of an average of ~7ms\ncause some HPC benchmarks to slow down significantly.  F.e.  NAS parallel\nslows down dramatically.  NAS parallel has a 12-16 seconds runtime w/o rotor\ncompared to 5.8 secs with the rotor patches.  It gets down to 5.05 secs with\nthe additional interrupt holdoff reductions.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "20f9148e38d930e23d33c8c80376c7e6018ea9e0",
      "old_mode": 33188,
      "old_path": "include/linux/gfp.h",
      "new_id": "7851e6b520cf013f4091cd4932f69cb4b00e76b5",
      "new_mode": 33188,
      "new_path": "include/linux/gfp.h"
    },
    {
      "type": "modify",
      "old_id": "791690d7d3fa02e4e5956af69fffedf654088adc",
      "old_mode": 33188,
      "old_path": "mm/page_alloc.c",
      "new_id": "234bd4895d14dc9a837473ce5474eee03253b0f1",
      "new_mode": 33188,
      "new_path": "mm/page_alloc.c"
    },
    {
      "type": "modify",
      "old_id": "61800b88e24159dd1cd3d193a5a824e0a9887dd3",
      "old_mode": 33188,
      "old_path": "mm/slab.c",
      "new_id": "d0bd7f07ab041d3d7da06c5cec610035c3058b33",
      "new_mode": 33188,
      "new_path": "mm/slab.c"
    }
  ]
}
