)]}'
{
  "commit": "753ee728964e5afb80c17659cc6c3a6fd0a42fe0",
  "tree": "41c9a7700d0858c1f77c5bdaba97e5b636f69b06",
  "parents": [
    "bfbb38fb808ac23ef44472d05d9bb36edfb49ed0"
  ],
  "author": {
    "name": "Martin Hicks",
    "email": "mort@sgi.com",
    "time": "Tue Jun 21 17:14:41 2005 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@ppc970.osdl.org",
    "time": "Tue Jun 21 18:46:14 2005 -0700"
  },
  "message": "[PATCH] VM: early zone reclaim\n\nThis is the core of the (much simplified) early reclaim.  The goal of this\npatch is to reclaim some easily-freed pages from a zone before falling back\nonto another zone.\n\nOne of the major uses of this is NUMA machines.  With the default allocator\nbehavior the allocator would look for memory in another zone, which might be\noff-node, before trying to reclaim from the current zone.\n\nThis adds a zone tuneable to enable early zone reclaim.  It is selected on a\nper-zone basis and is turned on/off via syscall.\n\nAdding some extra throttling on the reclaim was also required (patch\n4/4).  Without the machine would grind to a crawl when doing a \"make -j\"\nkernel build.  Even with this patch the System Time is higher on\naverage, but it seems tolerable.  Here are some numbers for kernbench\nruns on a 2-node, 4cpu, 8Gig RAM Altix in the \"make -j\" run:\n\n\t\t\twall  user   sys   %cpu  ctx sw.  sleeps\n\t\t\t----  ----   ---   ----   ------  ------\nNo patch\t\t1009  1384   847   258   298170   504402\nw/patch, no reclaim     880   1376   667   288   254064   396745\nw/patch \u0026 reclaim       1079  1385   926   252   291625   548873\n\nThese numbers are the average of 2 runs of 3 \"make -j\" runs done right\nafter system boot.  Run-to-run variability for \"make -j\" is huge, so\nthese numbers aren\u0027t terribly useful except to seee that with reclaim\nthe benchmark still finishes in a reasonable amount of time.\n\nI also looked at the NUMA hit/miss stats for the \"make -j\" runs and the\nreclaim doesn\u0027t make any difference when the machine is thrashing away.\n\nDoing a \"make -j8\" on a single node that is filled with page cache pages\ntakes 700 seconds with reclaim turned on and 735 seconds without reclaim\n(due to remote memory accesses).\n\nThe simple zone_reclaim syscall program is at\nhttp://www.bork.org/~mort/sgi/zone_reclaim.c\n\nSigned-off-by: Martin Hicks \u003cmort@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": "6cd1ed311f02b87aeccce917954624f7e28dd675",
      "old_mode": 33188,
      "old_path": "arch/i386/kernel/syscall_table.S",
      "new_id": "d408afaf6495918b3591bbcda5dbcd5a95a34a36",
      "new_mode": 33188,
      "new_path": "arch/i386/kernel/syscall_table.S"
    },
    {
      "type": "modify",
      "old_id": "d99316c9be28977f4a814970d42f629c958cd54b",
      "old_mode": 33188,
      "old_path": "arch/ia64/kernel/entry.S",
      "new_id": "b1d5d3d5276c8424a41f96f2c1009f7d0d31cfab",
      "new_mode": 33188,
      "new_path": "arch/ia64/kernel/entry.S"
    },
    {
      "type": "modify",
      "old_id": "61bcc1b1e3f4327fe8f24d6afb6c671ba86f349a",
      "old_mode": 33188,
      "old_path": "include/asm-i386/unistd.h",
      "new_id": "176413fb9ae3b9922031e3ddf57197cbf4430fd1",
      "new_mode": 33188,
      "new_path": "include/asm-i386/unistd.h"
    },
    {
      "type": "modify",
      "old_id": "33e26c557c5c6b59206ae2237d31d1c37fe37260",
      "old_mode": 33188,
      "old_path": "include/asm-ia64/unistd.h",
      "new_id": "f7f43ec2483a604640e965a7feb39df031fe65e5",
      "new_mode": 33188,
      "new_path": "include/asm-ia64/unistd.h"
    },
    {
      "type": "modify",
      "old_id": "beacd931b606f478cc188ec72bb081fc1f966632",
      "old_mode": 33188,
      "old_path": "include/linux/mmzone.h",
      "new_id": "dfc2452ccb104d23fb409fba5bc923292a96c3b3",
      "new_mode": 33188,
      "new_path": "include/linux/mmzone.h"
    },
    {
      "type": "modify",
      "old_id": "3bbc41be9bd0cb097c6c4c75b581e5cae5e02bb2",
      "old_mode": 33188,
      "old_path": "include/linux/swap.h",
      "new_id": "0d21e682d99db44a5af81fc6f8fec7bef94c176e",
      "new_mode": 33188,
      "new_path": "include/linux/swap.h"
    },
    {
      "type": "modify",
      "old_id": "0dda70ed1f983a7caaaf3434244f1ef1852918ae",
      "old_mode": 33188,
      "old_path": "kernel/sys_ni.c",
      "new_id": "6f15bea7d1a83dc363826c5bcdb2c0013feaebc0",
      "new_mode": 33188,
      "new_path": "kernel/sys_ni.c"
    },
    {
      "type": "modify",
      "old_id": "40169f0b7e9e681a01931f431a03d50c7da5449b",
      "old_mode": 33188,
      "old_path": "mm/page_alloc.c",
      "new_id": "3c0f69ded6b53d3f508bcafe362eb540003d8d45",
      "new_mode": 33188,
      "new_path": "mm/page_alloc.c"
    },
    {
      "type": "modify",
      "old_id": "6379ddbffd9b9b5fd81b3c7909ea24f709a60128",
      "old_mode": 33188,
      "old_path": "mm/vmscan.c",
      "new_id": "7da846960d8a7b2b4773758adb6ede0c7d2bc712",
      "new_mode": 33188,
      "new_path": "mm/vmscan.c"
    }
  ]
}
