)]}'
{
  "commit": "5bc7b8aca942d03bf2716ddcfcb4e0b57e43a1b8",
  "tree": "c76049e13755609ecbd4c4066fddd8bbfdd9f650",
  "parents": [
    "1eec6702a80e04416d528846a5ff2122484d95ec"
  ],
  "author": {
    "name": "Shaohua Li",
    "email": "shli@kernel.org",
    "time": "Mon Apr 29 15:08:36 2013 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Mon Apr 29 15:54:38 2013 -0700"
  },
  "message": "mm: thp: add split tail pages to shrink page list in page reclaim\n\nIn page reclaim, huge page is split.  split_huge_page() adds tail pages\nto LRU list.  Since we are reclaiming a huge page, it\u0027s better we\nreclaim all subpages of the huge page instead of just the head page.\nThis patch adds split tail pages to shrink page list so the tail pages\ncan be reclaimed soon.\n\nBefore this patch, run a swap workload:\n  thp_fault_alloc 3492\n  thp_fault_fallback 608\n  thp_collapse_alloc 6\n  thp_collapse_alloc_failed 0\n  thp_split 916\n\nWith this patch:\n  thp_fault_alloc 4085\n  thp_fault_fallback 16\n  thp_collapse_alloc 90\n  thp_collapse_alloc_failed 0\n  thp_split 1272\n\nfallback allocation is reduced a lot.\n\n[akpm@linux-foundation.org: fix CONFIG_SWAP\u003dn build]\nSigned-off-by: Shaohua Li \u003cshli@fusionio.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Minchan Kim \u003cminchan@kernel.org\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReviewed-by: Wanpeng Li \u003cliwanp@linux.vnet.ibm.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Hugh Dickins \u003chughd@google.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": "ee1c244a62a141f5cfa06e09ee6a381d512e23ad",
      "old_mode": 33188,
      "old_path": "include/linux/huge_mm.h",
      "new_id": "528454c2caa91b17cbb5761de006418909de2046",
      "new_mode": 33188,
      "new_path": "include/linux/huge_mm.h"
    },
    {
      "type": "modify",
      "old_id": "b5b12c71a2af93dd1484111d28fde65ca60d43f3",
      "old_mode": 33188,
      "old_path": "include/linux/swap.h",
      "new_id": "1701ce4be746502e89b6dfb417547c1ba805d466",
      "new_mode": 33188,
      "new_path": "include/linux/swap.h"
    },
    {
      "type": "modify",
      "old_id": "45eaae03062805899f559399691b42ca9554d829",
      "old_mode": 33188,
      "old_path": "mm/huge_memory.c",
      "new_id": "2ed1a160a85ba5c1351fbe2122b6380689b22e95",
      "new_mode": 33188,
      "new_path": "mm/huge_memory.c"
    },
    {
      "type": "modify",
      "old_id": "8a529a01e8fc79ebda8cfe30191fa9fb1d754b77",
      "old_mode": 33188,
      "old_path": "mm/swap.c",
      "new_id": "acd40bfffa8287cb0942297feb9dd0ceceb8e368",
      "new_mode": 33188,
      "new_path": "mm/swap.c"
    },
    {
      "type": "modify",
      "old_id": "fe43fd5578cf203c871891c9eb143fc05acd94a2",
      "old_mode": 33188,
      "old_path": "mm/swap_state.c",
      "new_id": "b3d40dcf36247975ac05b1f7a7119521e7cb65bb",
      "new_mode": 33188,
      "new_path": "mm/swap_state.c"
    },
    {
      "type": "modify",
      "old_id": "e53e49584cf3593c1e41391e77f0ef27105929bd",
      "old_mode": 33188,
      "old_path": "mm/vmscan.c",
      "new_id": "fa6a85378ee41400985aca748cd76b59c0f87594",
      "new_mode": 33188,
      "new_path": "mm/vmscan.c"
    }
  ]
}
