)]}'
{
  "commit": "4037d452202e34214e8a939fa5621b2b3bbb45b7",
  "tree": "31b59c0ca94fba4d53b6738b0bad3d1e9fde3063",
  "parents": [
    "77461ab33229d48614402decfb1b2eaa6d446861"
  ],
  "author": {
    "name": "Christoph Lameter",
    "email": "clameter@sgi.com",
    "time": "Wed May 09 02:35:14 2007 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.linux-foundation.org",
    "time": "Wed May 09 12:30:56 2007 -0700"
  },
  "message": "Move remote node draining out of slab allocators\n\nCurrently the slab allocators contain callbacks into the page allocator to\nperform the draining of pagesets on remote nodes.  This requires SLUB to have\na whole subsystem in order to be compatible with SLAB.  Moving node draining\nout of the slab allocators avoids a section of code in SLUB.\n\nMove the node draining so that is is done when the vm statistics are updated.\nAt that point we are already touching all the cachelines with the pagesets of\na processor.\n\nAdd a expire counter there.  If we have to update per zone or global vm\nstatistics then assume that the pageset will require subsequent draining.\n\nThe expire counter will be decremented on each vm stats update pass until it\nreaches zero.  Then we will drain one batch from the pageset.  The draining\nwill cause vm counter updates which will then cause another expiration until\nthe pcp is empty.  So we will drain a batch every 3 seconds.\n\nNote that remote node draining is a somewhat esoteric feature that is required\non large NUMA systems because otherwise significant portions of system memory\ncan become trapped in pcp queues.  The number of pcp is determined by the\nnumber of processors and nodes in a system.  A system with 4 processors and 2\nnodes has 8 pcps which is okay.  But a system with 1024 processors and 512\nnodes has 512k pcps with a high potential for large amount of memory being\ncaught in them.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.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": "97a36c3d96e2cb1d9981f1aa4a9b350138d268a0",
      "old_mode": 33188,
      "old_path": "include/linux/gfp.h",
      "new_id": "0d2ef0b082a626853b7651914094cabf88672434",
      "new_mode": 33188,
      "new_path": "include/linux/gfp.h"
    },
    {
      "type": "modify",
      "old_id": "2f1544e83042af69d45862f216781de0fe22d9fe",
      "old_mode": 33188,
      "old_path": "include/linux/mmzone.h",
      "new_id": "d09b1345a3a14fcf7f5115a2d6efc092e25bd8ed",
      "new_mode": 33188,
      "new_path": "include/linux/mmzone.h"
    },
    {
      "type": "modify",
      "old_id": "d53cbf8acb8e1018e36424cdefbeb92dcd548f15",
      "old_mode": 33188,
      "old_path": "mm/page_alloc.c",
      "new_id": "f9b5d6d5f4d6cf7643d1c6f39b1d112e8bd18c33",
      "new_mode": 33188,
      "new_path": "mm/page_alloc.c"
    },
    {
      "type": "modify",
      "old_id": "e50908b2bfac8d33948fdb70422f98030e74f5d9",
      "old_mode": 33188,
      "old_path": "mm/slab.c",
      "new_id": "944b20581f8c421369828fb2090381ad53aa3969",
      "new_mode": 33188,
      "new_path": "mm/slab.c"
    },
    {
      "type": "modify",
      "old_id": "dbb206503a8d37ae75ed67d340de5224cf067479",
      "old_mode": 33188,
      "old_path": "mm/slub.c",
      "new_id": "bd2efae02bcd9cedf262b8dd6e2c79f3fd4b1bec",
      "new_mode": 33188,
      "new_path": "mm/slub.c"
    },
    {
      "type": "modify",
      "old_id": "006eb7621869946141d7e159372d9661939f07a7",
      "old_mode": 33188,
      "old_path": "mm/vmstat.c",
      "new_id": "9832d9a41d8c721129a29f6b235b248b22de05dd",
      "new_mode": 33188,
      "new_path": "mm/vmstat.c"
    }
  ]
}
