)]}'
{
  "commit": "5ad333eb66ff1e52a87639822ae088577669dcf9",
  "tree": "addae6bbd19585f19328f309924d06d647e8f2b7",
  "parents": [
    "7e63efef857575320fb413fbc3d0ee704b72845f"
  ],
  "author": {
    "name": "Andy Whitcroft",
    "email": "apw@shadowen.org",
    "time": "Tue Jul 17 04:03:16 2007 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.linux-foundation.org",
    "time": "Tue Jul 17 10:22:59 2007 -0700"
  },
  "message": "Lumpy Reclaim V4\n\nWhen we are out of memory of a suitable size we enter reclaim.  The current\nreclaim algorithm targets pages in LRU order, which is great for fairness at\norder-0 but highly unsuitable if you desire pages at higher orders.  To get\npages of higher order we must shoot down a very high proportion of memory;\n\u003e95% in a lot of cases.\n\nThis patch set adds a lumpy reclaim algorithm to the allocator.  It targets\ngroups of pages at the specified order anchored at the end of the active and\ninactive lists.  This encourages groups of pages at the requested orders to\nmove from active to inactive, and active to free lists.  This behaviour is\nonly triggered out of direct reclaim when higher order pages have been\nrequested.\n\nThis patch set is particularly effective when utilised with an\nanti-fragmentation scheme which groups pages of similar reclaimability\ntogether.\n\nThis patch set is based on Peter Zijlstra\u0027s lumpy reclaim V2 patch which forms\nthe foundation.  Credit to Mel Gorman for sanitity checking.\n\nMel said:\n\n  The patches have an application with hugepage pool resizing.\n\n  When lumpy-reclaim is used used with ZONE_MOVABLE, the hugepages pool can\n  be resized with greater reliability.  Testing on a desktop machine with 2GB\n  of RAM showed that growing the hugepage pool with ZONE_MOVABLE on it\u0027s own\n  was very slow as the success rate was quite low.  Without lumpy-reclaim,\n  each attempt to grow the pool by 100 pages would yield 1 or 2 hugepages.\n  With lumpy-reclaim, getting 40 to 70 hugepages on each attempt was typical.\n\n[akpm@osdl.org: ia64 pfn_to_nid fixes and loop cleanup]\n[bunk@stusta.de: static declarations for internal functions]\n[a.p.zijlstra@chello.nl: initial lumpy V2 implementation]\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Bob Picco \u003cbob.picco@hp.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": "94344b2e0b46ccd3f4e19070e020be4ed6535bfd",
      "old_mode": 33188,
      "old_path": "fs/buffer.c",
      "new_id": "d654a3b6209e30a0fb68d438bee7a40a9bfc54cd",
      "new_mode": 33188,
      "new_path": "fs/buffer.c"
    },
    {
      "type": "modify",
      "old_id": "d71ff763c9df65e0132d27dc6442449b2a8b300b",
      "old_mode": 33188,
      "old_path": "include/linux/mmzone.h",
      "new_id": "da8eb8ad9e9b0a6b8578c845765170c24ad24e8c",
      "new_mode": 33188,
      "new_path": "include/linux/mmzone.h"
    },
    {
      "type": "modify",
      "old_id": "006868881346b771eb471c91a4cde68047f3edc6",
      "old_mode": 33188,
      "old_path": "include/linux/swap.h",
      "new_id": "665f85f2a3afe61ee8be2ee49e29953b3b46bc4f",
      "new_mode": 33188,
      "new_path": "include/linux/swap.h"
    },
    {
      "type": "modify",
      "old_id": "ac4f8c6b5c10771b71196c0af1238e894d225655",
      "old_mode": 33188,
      "old_path": "mm/page_alloc.c",
      "new_id": "1a889c3fec59c0259496e4edb24ff929560c2b36",
      "new_mode": 33188,
      "new_path": "mm/page_alloc.c"
    },
    {
      "type": "modify",
      "old_id": "1be5a6376ef0719b5e46937924a8a66cf59a35f1",
      "old_mode": 33188,
      "old_path": "mm/vmscan.c",
      "new_id": "1d9971d8924bb074b5a4204909e2a15d773bf371",
      "new_mode": 33188,
      "new_path": "mm/vmscan.c"
    }
  ]
}
