)]}'
{
  "commit": "0ff38490c836dc379ff7ec45b10a15a662f4e5f6",
  "tree": "cb42d5d3cace3c8d12f0b304879039c503807981",
  "parents": [
    "972d1a7b140569084439a81265a0f15b74e924e0"
  ],
  "author": {
    "name": "Christoph Lameter",
    "email": "clameter@sgi.com",
    "time": "Mon Sep 25 23:31:52 2006 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@g5.osdl.org",
    "time": "Tue Sep 26 08:48:51 2006 -0700"
  },
  "message": "[PATCH] zone_reclaim: dynamic slab reclaim\n\nCurrently one can enable slab reclaim by setting an explicit option in\n/proc/sys/vm/zone_reclaim_mode.  Slab reclaim is then used as a final\noption if the freeing of unmapped file backed pages is not enough to free\nenough pages to allow a local allocation.\n\nHowever, that means that the slab can grow excessively and that most memory\nof a node may be used by slabs.  We have had a case where a machine with\n46GB of memory was using 40-42GB for slab.  Zone reclaim was effective in\ndealing with pagecache pages.  However, slab reclaim was only done during\nglobal reclaim (which is a bit rare on NUMA systems).\n\nThis patch implements slab reclaim during zone reclaim.  Zone reclaim\noccurs if there is a danger of an off node allocation.  At that point we\n\n1. Shrink the per node page cache if the number of pagecache\n   pages is more than min_unmapped_ratio percent of pages in a zone.\n\n2. Shrink the slab cache if the number of the nodes reclaimable slab pages\n   (patch depends on earlier one that implements that counter)\n   are more than min_slab_ratio (a new /proc/sys/vm tunable).\n\nThe shrinking of the slab cache is a bit problematic since it is not node\nspecific.  So we simply calculate what point in the slab we want to reach\n(current per node slab use minus the number of pages that neeed to be\nallocated) and then repeately run the global reclaim until that is\nunsuccessful or we have reached the limit.  I hope we will have zone based\nslab reclaim at some point which will make that easier.\n\nThe default for the min_slab_ratio is 5%\n\nAlso remove the slab option from /proc/sys/vm/zone_reclaim_mode.\n\n[akpm@osdl.org: cleanups]\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": "7cee90223d3a0624296b42d983d786b25462dc56",
      "old_mode": 33188,
      "old_path": "Documentation/sysctl/vm.txt",
      "new_id": "20d0d797f539ce51d18f903aa4aec942ead16643",
      "new_mode": 33188,
      "new_path": "Documentation/sysctl/vm.txt"
    },
    {
      "type": "modify",
      "old_id": "08c41b9f92e0e8dc54621e1838be20564cd3c7ab",
      "old_mode": 33188,
      "old_path": "include/linux/mmzone.h",
      "new_id": "3693f1a5278839c23243691564a5085af0617313",
      "new_mode": 33188,
      "new_path": "include/linux/mmzone.h"
    },
    {
      "type": "modify",
      "old_id": "32db06c8ffe0801fe894afc10c9a8ba0200faee3",
      "old_mode": 33188,
      "old_path": "include/linux/swap.h",
      "new_id": "a2f5ad7c2d2e2ec700dd3d8b4e7dfac57f9e1136",
      "new_mode": 33188,
      "new_path": "include/linux/swap.h"
    },
    {
      "type": "modify",
      "old_id": "736ed917a4f8df2af5d25e1e8cc567cada1d863d",
      "old_mode": 33188,
      "old_path": "include/linux/sysctl.h",
      "new_id": "eca555781d05e1d67e62d070202ced6ac6bcfb84",
      "new_mode": 33188,
      "new_path": "include/linux/sysctl.h"
    },
    {
      "type": "modify",
      "old_id": "362a0cc371381cceab3f4a77b03430a604ecdb71",
      "old_mode": 33188,
      "old_path": "kernel/sysctl.c",
      "new_id": "fd43c3e6786b5b19c8ff173b45638c56392c7d86",
      "new_mode": 33188,
      "new_path": "kernel/sysctl.c"
    },
    {
      "type": "modify",
      "old_id": "47e98423b30dd6da8dea3e1bf03e8d7e3bf85cf0",
      "old_mode": 33188,
      "old_path": "mm/page_alloc.c",
      "new_id": "cf913bdd433e29b3b371bd97383f2c3c152248ce",
      "new_mode": 33188,
      "new_path": "mm/page_alloc.c"
    },
    {
      "type": "modify",
      "old_id": "349797ba4bac37fa476c5f33af8212afd33f3b3b",
      "old_mode": 33188,
      "old_path": "mm/vmscan.c",
      "new_id": "089e943c4d38f56c75309386dde288ab35eed7e8",
      "new_mode": 33188,
      "new_path": "mm/vmscan.c"
    }
  ]
}
