)]}'
{
  "log": [
    {
      "commit": "fa9add641b1b1c564db916accac1db346e7a2759",
      "tree": "875e74ec4d7fed0018fdbc134ad899949c5e3384",
      "parents": [
        "75b00af77ed5b5a3d55549f9e0c33f3969b9330c"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Tue May 29 15:07:09 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:28 2012 -0700"
      },
      "message": "mm/memcg: apply add/del_page to lruvec\n\nTake lruvec further: pass it instead of zone to add_page_to_lru_list() and\ndel_page_from_lru_list(); and pagevec_lru_move_fn() pass lruvec down to\nits target functions.\n\nThis cleanup eliminates a swathe of cruft in memcontrol.c, including\nmem_cgroup_lru_add_list(), mem_cgroup_lru_del_list() and\nmem_cgroup_lru_move_lists() - which never actually touched the lists.\n\nIn their place, mem_cgroup_page_lruvec() to decide the lruvec, previously\na side-effect of add, and mem_cgroup_update_lru_size() to maintain the\nlru_size stats.\n\nWhilst these are simplifications in their own right, the goal is to bring\nthe evaluation of lruvec next to the spin_locking of the lrus, in\npreparation for a future patch.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "75b00af77ed5b5a3d55549f9e0c33f3969b9330c",
      "tree": "17b59700daed9f536f50c375243ba6ce86c85945",
      "parents": [
        "4d7dcca213921fbaf08ee05359d28e4aaf2245f1"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Tue May 29 15:07:09 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:28 2012 -0700"
      },
      "message": "mm: trivial cleanups in vmscan.c\n\nUtter trivia in mm/vmscan.c, mostly just reducing the linecount slightly;\nmost exciting change being get_scan_count() calling vmscan_swappiness()\nonce instead of twice.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4d7dcca213921fbaf08ee05359d28e4aaf2245f1",
      "tree": "1c31ea8e8f9f88ca60864fbdaf9dfa74b09be96f",
      "parents": [
        "af7c4b0ec257ea9abb9c6749dd5a5ba0b8fae1fd"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Tue May 29 15:07:08 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:28 2012 -0700"
      },
      "message": "mm/memcg: get_lru_size not get_lruvec_size\n\nKonstantin just introduced mem_cgroup_get_lruvec_size() and\nget_lruvec_size(), I\u0027m about to add mem_cgroup_update_lru_size(): but\nwe\u0027re dealing with the same thing, lru_size[lru].  We ought to agree on\nthe naming, and I do think lru_size is the more correct: so rename his\nones to get_lru_size().\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f9be23d6da035241b7687b25e64401171986dcef",
      "tree": "9cdb45dc92785d18cbe6989abf8bf958618f28c8",
      "parents": [
        "90bdcfafdc660b359018262f0f8630d100e28760"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:07:02 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:27 2012 -0700"
      },
      "message": "mm/vmscan: kill struct mem_cgroup_zone\n\nKill struct mem_cgroup_zone and rename shrink_mem_cgroup_zone() to\nshrink_lruvec(), it always shrinks one lruvec which it takes as an\nargument.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: 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"
    },
    {
      "commit": "90bdcfafdc660b359018262f0f8630d100e28760",
      "tree": "f88bc1668a2f5dc9558a5498359ff295d90d792c",
      "parents": [
        "90126375d89ab8e0bde30ff22139b6097d56ed8a"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:07:02 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:27 2012 -0700"
      },
      "message": "mm/vmscan: push lruvec pointer into should_continue_reclaim()\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: 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"
    },
    {
      "commit": "90126375d89ab8e0bde30ff22139b6097d56ed8a",
      "tree": "3e18ac488acb6bf6f413a57eb8095f04e49d7cb2",
      "parents": [
        "1a93be0e7a6fc7f3d19101402665c7a958beb568"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:07:01 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:26 2012 -0700"
      },
      "message": "mm/vmscan: push lruvec pointer into get_scan_count()\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: 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"
    },
    {
      "commit": "1a93be0e7a6fc7f3d19101402665c7a958beb568",
      "tree": "af2988851801b6e5d04d3e3f6d5c2932d75ff08a",
      "parents": [
        "c56d5c7dfeb5cc754e17fa3d423086a3c551c219"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:07:01 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:26 2012 -0700"
      },
      "message": "mm/vmscan: push lruvec pointer into shrink_list()\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: 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"
    },
    {
      "commit": "c56d5c7dfeb5cc754e17fa3d423086a3c551c219",
      "tree": "4c89ad9692dbd3a2e0eaf96de0162a5d3066925e",
      "parents": [
        "074291fea8bcedeabf295360e2ddd9bbb5830b4a"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:07:00 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:26 2012 -0700"
      },
      "message": "mm/vmscan: push lruvec pointer into inactive_list_is_low()\n\nSwitch mem_cgroup_inactive_anon_is_low() to lruvec pointers,\nmem_cgroup_get_lruvec_size() is more effective than\nmem_cgroup_zone_nr_lru_pages()\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: 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"
    },
    {
      "commit": "074291fea8bcedeabf295360e2ddd9bbb5830b4a",
      "tree": "01531a2ca7e9b648a4d8cd9bc772aa484ed2190d",
      "parents": [
        "27ac81d85e5cfcc755dd5fa3f04dc883ab5d821b"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:07:00 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:26 2012 -0700"
      },
      "message": "mm/vmscan: replace zone_nr_lru_pages() with get_lruvec_size()\n\nIf memory cgroup is enabled we always use lruvecs which are embedded into\nstruct mem_cgroup_per_zone, so we can reach lru_size counters via\ncontainer_of().\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: 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"
    },
    {
      "commit": "27ac81d85e5cfcc755dd5fa3f04dc883ab5d821b",
      "tree": "e3b8ad8f4b67a3f1dc7a2a809a009a5544cade6b",
      "parents": [
        "95d918fc009072c2f88ce2e8b5db2e5abfad7c3e"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:07:00 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:26 2012 -0700"
      },
      "message": "mm/vmscan: push lruvec pointer into putback_inactive_pages()\n\nAs zone_reclaim_stat is now located in the lruvec, we can reach it\ndirectly.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: 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"
    },
    {
      "commit": "95d918fc009072c2f88ce2e8b5db2e5abfad7c3e",
      "tree": "a20527a9a9276f7814d4fdad780d56a7d6339d86",
      "parents": [
        "6a18adb35c27848195c938b0779ce882d63d3ed1"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:06:59 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:26 2012 -0700"
      },
      "message": "mm/vmscan: remove update_isolated_counts()\n\nupdate_isolated_counts() is no longer required, because lumpy-reclaim was\nremoved.  Insanity is over, now there is only one kind of inactive page.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: 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"
    },
    {
      "commit": "6a18adb35c27848195c938b0779ce882d63d3ed1",
      "tree": "e2b187e05b150db55764c8347472452edb50c6d3",
      "parents": [
        "5dc35979e444b50d5551bdeb7a7abc5c69c875d0"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:06:59 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:26 2012 -0700"
      },
      "message": "mm/vmscan: push zone pointer into shrink_page_list()\n\nIt doesn\u0027t need a pointer to the cgroup - pointer to the zone is enough.\nThis patch also kills the \"mz\" argument of page_check_references() - it is\nunused after \"mm: memcg: count pte references from every member of the\nreclaimed hierarch\"\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: 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"
    },
    {
      "commit": "5dc35979e444b50d5551bdeb7a7abc5c69c875d0",
      "tree": "568fa3c4107ce1dd41385c98b4bbfc3dbff1fa8d",
      "parents": [
        "7f5e86c2ccc1480946d2c869d7f7d5278e828092"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:06:58 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:26 2012 -0700"
      },
      "message": "mm/vmscan: push lruvec pointer into isolate_lru_pages()\n\nMove the mem_cgroup_zone_lruvec() call from isolate_lru_pages() into\nshrink_[in]active_list().  Further patches push it to shrink_zone() step\nby step.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: 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"
    },
    {
      "commit": "9e3b2f8cd340e13353a44c9a34caef2848131ed7",
      "tree": "cda727e0e4f87992826075ea75c8519bf8e78034",
      "parents": [
        "3d58ab5c97fa2d145050242137ac39ca7d3bc2fc"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:06:57 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:26 2012 -0700"
      },
      "message": "mm/vmscan: store \"priority\" in struct scan_control\n\nIn memory reclaim some function have too many arguments - \"priority\" is\none of them.  It can be stored in struct scan_control - we construct them\non the same level.  Instead of an open coded loop we set the initial\nsc.priority, and do_try_to_free_pages() decreases it down to zero.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: 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"
    },
    {
      "commit": "3d58ab5c97fa2d145050242137ac39ca7d3bc2fc",
      "tree": "e9d11fc9ababf9eafcb54cc60facd793eeafaf74",
      "parents": [
        "748dad36d645f5c4517a115d60bb3a0e8f877ac0"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:06:57 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:26 2012 -0700"
      },
      "message": "mm/memcg: use vm_swappiness from target memory cgroup\n\nUse vm_swappiness from memory cgroup which is triggered this memory\nreclaim.  This is more reasonable and allows to kill one argument.\n\n[akpm@linux-foundation.org: fix build (patch skew)]\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujtisu.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bbf808ed7de68fdf626fd4f9718d88cf03ce13a9",
      "tree": "91f3dc3eb619f2b809cdd9c1239a6db0e62c97ed",
      "parents": [
        "f3fd4a61928a5edf5b033a417e761b488b43e203"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:06:54 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:25 2012 -0700"
      },
      "message": "mm/memcg: kill mem_cgroup_lru_del()\n\nThis patch kills mem_cgroup_lru_del(), we can use\nmem_cgroup_lru_del_list() instead.  On 0-order isolation we already have\nright lru list id.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f3fd4a61928a5edf5b033a417e761b488b43e203",
      "tree": "f56c5b6f4a4c732c9167e4cacb3e9c25ced0d000",
      "parents": [
        "014483bcccc5edbf861d89dc1a6f7cdc02f9f4c0"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:06:54 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:25 2012 -0700"
      },
      "message": "mm: remove lru type checks from __isolate_lru_page()\n\nAfter patch \"mm: forbid lumpy-reclaim in shrink_active_list()\" we can\ncompletely remove anon/file and active/inactive lru type filters from\n__isolate_lru_page(), because isolation for 0-order reclaim always\nisolates pages from right lru list.  And pages-isolation for lumpy\nshrink_inactive_list() or memory-compaction anyway allowed to isolate\npages from all evictable lru lists.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3cb9945179bd04e9282f31a1173ac11b1300c462",
      "tree": "06c7cb3dfc969f347b16eaca515e2b3ca9058f8f",
      "parents": [
        "89abfab133ef1f5902abafb744df72793213ac19"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:06:53 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:25 2012 -0700"
      },
      "message": "mm: push lru index into shrink_[in]active_list()\n\nLet\u0027s toss lru index through call stack to isolate_lru_pages(), this is\nbetter than its reconstructing from individual bits.\n\n[akpm@linux-foundation.org: fix kerneldoc, per Minchan]\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "89abfab133ef1f5902abafb744df72793213ac19",
      "tree": "29df29e2a34a0af3649417d2e430480c7e7e5fa1",
      "parents": [
        "c3c787e8c38557ccf44c670d73aebe630a2b1479"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Tue May 29 15:06:53 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:25 2012 -0700"
      },
      "message": "mm/memcg: move reclaim_stat into lruvec\n\nWith mem_cgroup_disabled() now explicit, it becomes clear that the\nzone_reclaim_stat structure actually belongs in lruvec, per-zone when\nmemcg is disabled but per-memcg per-zone when it\u0027s enabled.\n\nWe can delete mem_cgroup_get_reclaim_stat(), and change\nupdate_page_reclaim_stat() to update just the one set of stats, the one\nwhich get_scan_count() will actually use.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nReviewed-by: Minchan Kim \u003cminchan@kernel.org\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c3c787e8c38557ccf44c670d73aebe630a2b1479",
      "tree": "132184792e88bbe6346a8d40999f9da70704f84e",
      "parents": [
        "86493009d3b7e51eee38575f9537b754f5b6c536"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Tue May 29 15:06:52 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:25 2012 -0700"
      },
      "message": "mm/memcg: scanning_global_lru means mem_cgroup_disabled\n\nAlthough one has to admire the skill with which it has been concealed,\nscanning_global_lru(mz) is actually just an interesting way to test\nmem_cgroup_disabled().  Too many developer hours have been wasted on\nconfusing it with global_reclaim(): just use mem_cgroup_disabled().\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fe35004fbf9eaf67482b074a2e032abb9c89b1dd",
      "tree": "a4c1387c914e6967d9a2e60174dc1dd78af72ee8",
      "parents": [
        "c50ac050811d6485616a193eb0f37bfbd191cc89"
      ],
      "author": {
        "name": "Satoru Moriya",
        "email": "satoru.moriya@hds.com",
        "time": "Tue May 29 15:06:47 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:24 2012 -0700"
      },
      "message": "mm: avoid swapping out with swappiness\u003d\u003d0\n\nSometimes we\u0027d like to avoid swapping out anonymous memory.  In\nparticular, avoid swapping out pages of important process or process\ngroups while there is a reasonable amount of pagecache on RAM so that we\ncan satisfy our customers\u0027 requirements.\n\nOTOH, we can control how aggressive the kernel will swap memory pages with\n/proc/sys/vm/swappiness for global and\n/sys/fs/cgroup/memory/memory.swappiness for each memcg.\n\nBut with current reclaim implementation, the kernel may swap out even if\nwe set swappiness\u003d0 and there is pagecache in RAM.\n\nThis patch changes the behavior with swappiness\u003d\u003d0.  If we set\nswappiness\u003d\u003d0, the kernel does not swap out completely (for global reclaim\nuntil the amount of free pages and filebacked pages in a zone has been\nreduced to something very very small (nr_free + nr_filebacked \u003c high\nwatermark)).\n\nSigned-off-by: Satoru Moriya \u003csatoru.moriya@hds.com\u003e\nAcked-by: Minchan Kim \u003cminchan@kernel.org\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e48982734ea0500d1eba4f9d96195acc5406cad6",
      "tree": "eceae6285010e2540750dcd1fef1d24df1876859",
      "parents": [
        "692569946fbf56fbb75d85c57679541f9a3550b4"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.cz",
        "time": "Tue May 29 15:06:45 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:23 2012 -0700"
      },
      "message": "mm: consider all swapped back pages in used-once logic\n\nCommit 645747462435 (\"vmscan: detect mapped file pages used only once\")\nmade mapped pages have another round in inactive list because they might\nbe just short lived and so we could consider them again next time.  This\nheuristic helps to reduce pressure on the active list with a streaming\nIO worklods.\n\nThis patch fixes a regression introduced by this commit for heavy shmem\nbased workloads because unlike Anon pages, which are excluded from this\nheuristic because they are usually long lived, shmem pages are handled\nas a regular page cache.\n\nThis doesn\u0027t work quite well, unfortunately, if the workload is mostly\nbacked by shmem (in memory database sitting on 80% of memory) with a\nstreaming IO in the background (backup - up to 20% of memory).  Anon\ninactive list is full of (dirty) shmem pages when watermarks are hit.\nShmem pages are kept in the inactive list (they are referenced) in the\nfirst round and it is hard to reclaim anything else so we reach lower\nscanning priorities very quickly which leads to an excessive swap out.\n\nLet\u0027s fix this by excluding all swap backed pages (they tend to be long\nlived wrt.  the regular page cache anyway) from used-once heuristic and\nrather activate them if they are referenced.\n\nThe customer\u0027s workload is shmem backed database (80% of RAM) and they\nare measuring transactions/s with an IO in the background (20%).\nTransactions touch more or less random rows in the table.  The\ntransaction rate fell by a factor of 3 (in the worst case) because of\ncommit 64574746.  This patch restores the previous numbers.\n\nSigned-off-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e\t[2.6.34+]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "096a7cf44712ab531101bb4689f75f7fcd9b9f18",
      "tree": "319313b6fcb6cc45bd7bee6b3fda4c8416863371",
      "parents": [
        "c3ac9a8ade65ccbfd145fbff895ae8d8d62d09b0"
      ],
      "author": {
        "name": "Ying Han",
        "email": "yinghan@google.com",
        "time": "Tue May 29 15:06:25 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:20 2012 -0700"
      },
      "message": "mm: rename is_mlocked_vma() to mlocked_vma_newpage()\n\nAndrew pointed out that the is_mlocked_vma() is misnamed.  A function\nwith name like that would expect bool return and no side-effects.\n\nSince it is called on the fault path for new page, rename it in this\npatch.\n\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujtisu.com\u003e\nReviewed-by: Minchan Kim \u003cminchan@kernel.org\u003e\n[akpm@linux-foundation.org: s/mlock_vma_newpage/mlock_vma_newpage/, per Minchan]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c3ac9a8ade65ccbfd145fbff895ae8d8d62d09b0",
      "tree": "4df684151388ffa6407d714dd39d1fe94f72d424",
      "parents": [
        "91c63734f6908425903aed69c04035592f18d398"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue May 29 15:06:25 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:20 2012 -0700"
      },
      "message": "mm: memcg: count pte references from every member of the reclaimed hierarchy\n\nThe rmap walker checking page table references has historically ignored\nreferences from VMAs that were not part of the memcg that was being\nreclaimed during memcg hard limit reclaim.\n\nWhen transitioning global reclaim to memcg hierarchy reclaim, I missed\nthat bit and now references from outside a memcg are ignored even during\nglobal reclaim.\n\nReverting back to traditional behaviour - count all references during\nglobal reclaim and only mind references of the memcg being reclaimed\nduring limit reclaim would be one option.\n\nHowever, the more generic idea is to ignore references exactly then when\nthey are outside the hierarchy that is currently under reclaim; because\nonly then will their reclamation be of any use to help the pressure\nsituation.  It makes no sense to ignore references from a sibling memcg\nand then evict a page that will be immediately refaulted by that sibling\nwhich contributes to the same usage of the common ancestor under\nreclaim.\n\nThe solution: make the rmap walker ignore references from VMAs that are\nnot part of the hierarchy that is being reclaimed.\n\nFlat limit reclaim will stay the same, hierarchical limit reclaim will\nmind the references only to pages that the hierarchy owns.  Global\nreclaim, since it reclaims from all memcgs, will be fixed to regard all\nreferences.\n\n[akpm@linux-foundation.org: name the args in the declaration]\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReported-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nAcked-by: Konstantin Khlebnikov\u003ckhlebnikov@openvz.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "23b9da55c5b0feb484bd5e8615f4eb1ce4169453",
      "tree": "84ce2cce4aca6c5e5ca4b7066faa21db1148b370",
      "parents": [
        "41ac1999c3e3563e1810b14878a869c79c9368bb"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Tue May 29 15:06:20 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:19 2012 -0700"
      },
      "message": "mm: vmscan: remove reclaim_mode_t\n\nThere is little motiviation for reclaim_mode_t once RECLAIM_MODE_[A]SYNC\nand lumpy reclaim have been removed.  This patch gets rid of\nreclaim_mode_t as well and improves the documentation about what\nreclaim/compaction is and when it is triggered.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "41ac1999c3e3563e1810b14878a869c79c9368bb",
      "tree": "3ee7d3778dd638ae1f429444af4ea0360cca191f",
      "parents": [
        "c53919adc045bf803252e912f23028a68525753d"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Tue May 29 15:06:19 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:19 2012 -0700"
      },
      "message": "mm: vmscan: do not stall on writeback during memory compaction\n\nThis patch stops reclaim/compaction entering sync reclaim as this was\nonly intended for lumpy reclaim and an oversight.  Page migration has\nits own logic for stalling on writeback pages if necessary and memory\ncompaction is already using it.\n\nWaiting on page writeback is bad for a number of reasons but the primary\none is that waiting on writeback to a slow device like USB can take a\nconsiderable length of time.  Page reclaim instead uses\nwait_iff_congested() to throttle if too many dirty pages are being\nscanned.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c53919adc045bf803252e912f23028a68525753d",
      "tree": "352361d84125b06ca890f3a2b3568512cc14c458",
      "parents": [
        "e709ffd6169ccd259eb5874e853303e91e94e829"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Tue May 29 15:06:19 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:19 2012 -0700"
      },
      "message": "mm: vmscan: remove lumpy reclaim\n\nThis series removes lumpy reclaim and some stalling logic that was\nunintentionally being used by memory compaction.  The end result is that\nstalling on dirty pages during page reclaim now depends on\nwait_iff_congested().\n\nFour kernels were compared\n\n  3.3.0     vanilla\n  3.4.0-rc2 vanilla\n  3.4.0-rc2 lumpyremove-v2 is patch one from this series\n  3.4.0-rc2 nosync-v2r3 is the full series\n\nRemoving lumpy reclaim saves almost 900 bytes of text whereas the full\nseries removes 1200 bytes.\n\n     text     data      bss       dec     hex  filename\n  6740375  1927944  2260992  10929311  a6c49f  vmlinux-3.4.0-rc2-vanilla\n  6739479  1927944  2260992  10928415  a6c11f  vmlinux-3.4.0-rc2-lumpyremove-v2\n  6739159  1927944  2260992  10928095  a6bfdf  vmlinux-3.4.0-rc2-nosync-v2\n\nThere are behaviour changes in the series and so tests were run with\nmonitoring of ftrace events.  This disrupts results so the performance\nresults are distorted but the new behaviour should be clearer.\n\nfs-mark running in a threaded configuration showed little of interest as\nit did not push reclaim aggressively\n\n  FS-Mark Multi Threaded\n                          3.3.0-vanilla       rc2-vanilla       lumpyremove-v2r3       nosync-v2r3\n  Files/s  min           3.20 ( 0.00%)        3.20 ( 0.00%)        3.20 ( 0.00%)        3.20 ( 0.00%)\n  Files/s  mean          3.20 ( 0.00%)        3.20 ( 0.00%)        3.20 ( 0.00%)        3.20 ( 0.00%)\n  Files/s  stddev        0.00 ( 0.00%)        0.00 ( 0.00%)        0.00 ( 0.00%)        0.00 ( 0.00%)\n  Files/s  max           3.20 ( 0.00%)        3.20 ( 0.00%)        3.20 ( 0.00%)        3.20 ( 0.00%)\n  Overhead min      508667.00 ( 0.00%)   521350.00 (-2.49%)   544292.00 (-7.00%)   547168.00 (-7.57%)\n  Overhead mean     551185.00 ( 0.00%)   652690.73 (-18.42%)   991208.40 (-79.83%)   570130.53 (-3.44%)\n  Overhead stddev    18200.69 ( 0.00%)   331958.29 (-1723.88%)  1579579.43 (-8578.68%)     9576.81 (47.38%)\n  Overhead max      576775.00 ( 0.00%)  1846634.00 (-220.17%)  6901055.00 (-1096.49%)   585675.00 (-1.54%)\n  MMTests Statistics: duration\n  Sys Time Running Test (seconds)             309.90    300.95    307.33    298.95\n  User+Sys Time Running Test (seconds)        319.32    309.67    315.69    307.51\n  Total Elapsed Time (seconds)               1187.85   1193.09   1191.98   1193.73\n\n  MMTests Statistics: vmstat\n  Page Ins                                       80532       82212       81420       79480\n  Page Outs                                  111434984   111456240   111437376   111582628\n  Swap Ins                                           0           0           0           0\n  Swap Outs                                          0           0           0           0\n  Direct pages scanned                           44881       27889       27453       34843\n  Kswapd pages scanned                        25841428    25860774    25861233    25843212\n  Kswapd pages reclaimed                      25841393    25860741    25861199    25843179\n  Direct pages reclaimed                         44881       27889       27453       34843\n  Kswapd efficiency                                99%         99%         99%         99%\n  Kswapd velocity                            21754.791   21675.460   21696.029   21649.127\n  Direct efficiency                               100%        100%        100%        100%\n  Direct velocity                               37.783      23.375      23.031      29.188\n  Percentage direct scans                           0%          0%          0%          0%\n\nftrace showed that there was no stalling on writeback or pages submitted\nfor IO from reclaim context.\n\npostmark was similar and while it was more interesting, it also did not\npush reclaim heavily.\n\n  POSTMARK\n                                       3.3.0-vanilla       rc2-vanilla  lumpyremove-v2r3       nosync-v2r3\n  Transactions per second:               16.00 ( 0.00%)    20.00 (25.00%)    18.00 (12.50%)    17.00 ( 6.25%)\n  Data megabytes read per second:        18.80 ( 0.00%)    24.27 (29.10%)    22.26 (18.40%)    20.54 ( 9.26%)\n  Data megabytes written per second:     35.83 ( 0.00%)    46.25 (29.08%)    42.42 (18.39%)    39.14 ( 9.24%)\n  Files created alone per second:        28.00 ( 0.00%)    38.00 (35.71%)    34.00 (21.43%)    30.00 ( 7.14%)\n  Files create/transact per second:       8.00 ( 0.00%)    10.00 (25.00%)     9.00 (12.50%)     8.00 ( 0.00%)\n  Files deleted alone per second:       556.00 ( 0.00%)  1224.00 (120.14%)  3062.00 (450.72%)  6124.00 (1001.44%)\n  Files delete/transact per second:       8.00 ( 0.00%)    10.00 (25.00%)     9.00 (12.50%)     8.00 ( 0.00%)\n\n  MMTests Statistics: duration\n  Sys Time Running Test (seconds)             113.34    107.99    109.73    108.72\n  User+Sys Time Running Test (seconds)        145.51    139.81    143.32    143.55\n  Total Elapsed Time (seconds)               1159.16    899.23    980.17   1062.27\n\n  MMTests Statistics: vmstat\n  Page Ins                                    13710192    13729032    13727944    13760136\n  Page Outs                                   43071140    42987228    42733684    42931624\n  Swap Ins                                           0           0           0           0\n  Swap Outs                                          0           0           0           0\n  Direct pages scanned                               0           0           0           0\n  Kswapd pages scanned                         9941613     9937443     9939085     9929154\n  Kswapd pages reclaimed                       9940926     9936751     9938397     9928465\n  Direct pages reclaimed                             0           0           0           0\n  Kswapd efficiency                                99%         99%         99%         99%\n  Kswapd velocity                             8576.567   11051.058   10140.164    9347.109\n  Direct efficiency                               100%        100%        100%        100%\n  Direct velocity                                0.000       0.000       0.000       0.000\n\nIt looks like here that the full series regresses performance but as\nftrace showed no usage of wait_iff_congested() or sync reclaim I am\nassuming it\u0027s a disruption due to monitoring.  Other data such as memory\nusage, page IO, swap IO all looked similar.\n\nRunning a benchmark with a plain DD showed nothing very interesting.\nThe full series stalled in wait_iff_congested() slightly less but stall\ntimes on vanilla kernels were marginal.\n\nRunning a benchmark that hammered on file-backed mappings showed stalls\ndue to congestion but not in sync writebacks\n\n  MICRO\n                                       3.3.0-vanilla       rc2-vanilla  lumpyremove-v2r3       nosync-v2r3\n  MMTests Statistics: duration\n  Sys Time Running Test (seconds)             308.13    294.50    298.75    299.53\n  User+Sys Time Running Test (seconds)        330.45    316.28    318.93    320.79\n  Total Elapsed Time (seconds)               1814.90   1833.88   1821.14   1832.91\n\n  MMTests Statistics: vmstat\n  Page Ins                                      108712      120708       97224      110344\n  Page Outs                                  155514576   156017404   155813676   156193256\n  Swap Ins                                           0           0           0           0\n  Swap Outs                                          0           0           0           0\n  Direct pages scanned                         2599253     1550480     2512822     2414760\n  Kswapd pages scanned                        69742364    71150694    68839041    69692533\n  Kswapd pages reclaimed                      34824488    34773341    34796602    34799396\n  Direct pages reclaimed                         53693       94750       61792       75205\n  Kswapd efficiency                                49%         48%         50%         49%\n  Kswapd velocity                            38427.662   38797.901   37799.972   38022.889\n  Direct efficiency                                 2%          6%          2%          3%\n  Direct velocity                             1432.174     845.464    1379.807    1317.446\n  Percentage direct scans                           3%          2%          3%          3%\n  Page writes by reclaim                             0           0           0           0\n  Page writes file                                   0           0           0           0\n  Page writes anon                                   0           0           0           0\n  Page reclaim immediate                             0           0           0        1218\n  Page rescued immediate                             0           0           0           0\n  Slabs scanned                                  15360       16384       13312       16384\n  Direct inode steals                                0           0           0           0\n  Kswapd inode steals                             4340        4327        1630        4323\n\n  FTrace Reclaim Statistics: congestion_wait\n  Direct number congest     waited                 0          0          0          0\n  Direct time   congest     waited               0ms        0ms        0ms        0ms\n  Direct full   congest     waited                 0          0          0          0\n  Direct number conditional waited               900        870        754        789\n  Direct time   conditional waited               0ms        0ms        0ms       20ms\n  Direct full   conditional waited                 0          0          0          0\n  KSwapd number congest     waited              2106       2308       2116       1915\n  KSwapd time   congest     waited          139924ms   157832ms   125652ms   132516ms\n  KSwapd full   congest     waited              1346       1530       1202       1278\n  KSwapd number conditional waited             12922      16320      10943      14670\n  KSwapd time   conditional waited               0ms        0ms        0ms        0ms\n  KSwapd full   conditional waited                 0          0          0          0\n\nReclaim statistics are not radically changed.  The stall times in kswapd\nare massive but it is clear that it is due to calls to congestion_wait()\nand that is almost certainly the call in balance_pgdat().  Otherwise\nstalls due to dirty pages are non-existant.\n\nI ran a benchmark that stressed high-order allocation.  This is very\nartifical load but was used in the past to evaluate lumpy reclaim and\ncompaction.  Generally I look at allocation success rates and latency\nfigures.\n\n  STRESS-HIGHALLOC\n                   3.3.0-vanilla       rc2-vanilla  lumpyremove-v2r3       nosync-v2r3\n  Pass 1          81.00 ( 0.00%)    28.00 (-53.00%)    24.00 (-57.00%)    28.00 (-53.00%)\n  Pass 2          82.00 ( 0.00%)    39.00 (-43.00%)    38.00 (-44.00%)    43.00 (-39.00%)\n  while Rested    88.00 ( 0.00%)    87.00 (-1.00%)    88.00 ( 0.00%)    88.00 ( 0.00%)\n\n  MMTests Statistics: duration\n  Sys Time Running Test (seconds)             740.93    681.42    685.14    684.87\n  User+Sys Time Running Test (seconds)       2922.65   3269.52   3281.35   3279.44\n  Total Elapsed Time (seconds)               1161.73   1152.49   1159.55   1161.44\n\n  MMTests Statistics: vmstat\n  Page Ins                                     4486020     2807256     2855944     2876244\n  Page Outs                                    7261600     7973688     7975320     7986120\n  Swap Ins                                       31694           0           0           0\n  Swap Outs                                      98179           0           0           0\n  Direct pages scanned                           53494       57731       34406      113015\n  Kswapd pages scanned                         6271173     1287481     1278174     1219095\n  Kswapd pages reclaimed                       2029240     1281025     1260708     1201583\n  Direct pages reclaimed                          1468       14564       16649       92456\n  Kswapd efficiency                                32%         99%         98%         98%\n  Kswapd velocity                             5398.133    1117.130    1102.302    1049.641\n  Direct efficiency                                 2%         25%         48%         81%\n  Direct velocity                               46.047      50.092      29.672      97.306\n  Percentage direct scans                           0%          4%          2%          8%\n  Page writes by reclaim                       1616049           0           0           0\n  Page writes file                             1517870           0           0           0\n  Page writes anon                               98179           0           0           0\n  Page reclaim immediate                        103778       27339        9796       17831\n  Page rescued immediate                             0           0           0           0\n  Slabs scanned                                1096704      986112      980992      998400\n  Direct inode steals                              223      215040      216736      247881\n  Kswapd inode steals                           175331       61548       68444       63066\n  Kswapd skipped wait                            21991           0           1           0\n  THP fault alloc                                    1         135         125         134\n  THP collapse alloc                               393         311         228         236\n  THP splits                                        25          13           7           8\n  THP fault fallback                                 0           0           0           0\n  THP collapse fail                                  3           5           7           7\n  Compaction stalls                                865        1270        1422        1518\n  Compaction success                               370         401         353         383\n  Compaction failures                              495         869        1069        1135\n  Compaction pages moved                        870155     3828868     4036106     4423626\n  Compaction move failure                        26429       23865       29742       27514\n\nSuccess rates are completely hosed for 3.4-rc2 which is almost certainly\ndue to commit fe2c2a106663 (\"vmscan: reclaim at order 0 when compaction\nis enabled\").  I expected this would happen for kswapd and impair\nallocation success rates (https://lkml.org/lkml/2012/1/25/166) but I did\nnot anticipate this much a difference: 80% less scanning, 37% less\nreclaim by kswapd\n\nIn comparison, reclaim/compaction is not aggressive and gives up easily\nwhich is the intended behaviour.  hugetlbfs uses __GFP_REPEAT and would\nbe much more aggressive about reclaim/compaction than THP allocations\nare.  The stress test above is allocating like neither THP or hugetlbfs\nbut is much closer to THP.\n\nMainline is now impaired in terms of high order allocation under heavy\nload although I do not know to what degree as I did not test with\n__GFP_REPEAT.  Keep this in mind for bugs related to hugepage pool\nresizing, THP allocation and high order atomic allocation failures from\nnetwork devices.\n\nIn terms of congestion throttling, I see the following for this test\n\n  FTrace Reclaim Statistics: congestion_wait\n  Direct number congest     waited                 3          0          0          0\n  Direct time   congest     waited               0ms        0ms        0ms        0ms\n  Direct full   congest     waited                 0          0          0          0\n  Direct number conditional waited               957        512       1081       1075\n  Direct time   conditional waited               0ms        0ms        0ms        0ms\n  Direct full   conditional waited                 0          0          0          0\n  KSwapd number congest     waited                36          4          3          5\n  KSwapd time   congest     waited            3148ms      400ms      300ms      500ms\n  KSwapd full   congest     waited                30          4          3          5\n  KSwapd number conditional waited             88514        197        332        542\n  KSwapd time   conditional waited            4980ms        0ms        0ms        0ms\n  KSwapd full   conditional waited                49          0          0          0\n\nThe \"conditional waited\" times are the most interesting as this is\ndirectly impacted by the number of dirty pages encountered during scan.\nAs lumpy reclaim is no longer scanning contiguous ranges, it is finding\nfewer dirty pages.  This brings wait times from about 5 seconds to 0.\nkswapd itself is still calling congestion_wait() so it\u0027ll still stall but\nit\u0027s a lot less.\n\nIn terms of the type of IO we were doing, I see this\n\n  FTrace Reclaim Statistics: mm_vmscan_writepage\n  Direct writes anon  sync                         0          0          0          0\n  Direct writes anon  async                        0          0          0          0\n  Direct writes file  sync                         0          0          0          0\n  Direct writes file  async                        0          0          0          0\n  Direct writes mixed sync                         0          0          0          0\n  Direct writes mixed async                        0          0          0          0\n  KSwapd writes anon  sync                         0          0          0          0\n  KSwapd writes anon  async                    91682          0          0          0\n  KSwapd writes file  sync                         0          0          0          0\n  KSwapd writes file  async                   822629          0          0          0\n  KSwapd writes mixed sync                         0          0          0          0\n  KSwapd writes mixed async                        0          0          0          0\n\nIn 3.2, kswapd was doing a bunch of async writes of pages but\nreclaim/compaction was never reaching a point where it was doing sync\nIO.  This does not guarantee that reclaim/compaction was not calling\nwait_on_page_writeback() but I would consider it unlikely.  It indicates\nthat merging patches 2 and 3 to stop reclaim/compaction calling\nwait_on_page_writeback() should be safe.\n\nThis patch:\n\nLumpy reclaim had a purpose but in the mind of some, it was to kick the\nsystem so hard it trashed.  For others the purpose was to complicate\nvmscan.c.  Over time it was giving softer shoes and a nicer attitude but\nmemory compaction needs to step up and replace it so this patch sends\nlumpy reclaim to the farm.\n\nThe tracepoint format changes for isolating LRU pages with this patch\napplied.  Furthermore reclaim/compaction can no longer queue dirty pages\nin pageout() if the underlying BDI is congested.  Lumpy reclaim used\nthis logic and reclaim/compaction was using it in error.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e709ffd6169ccd259eb5874e853303e91e94e829",
      "tree": "796b56c2507b8581492da73e354d651c9dd7076b",
      "parents": [
        "edad9d2c337d43278a9d5aeb0ed531c2e838f8a6"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Tue May 29 15:06:18 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:19 2012 -0700"
      },
      "message": "mm: remove swap token code\n\nThe swap token code no longer fits in with the current VM model.  It\ndoes not play well with cgroups or the better NUMA placement code in\ndevelopment, since we have only one swap token globally.\n\nIt also has the potential to mess with scalability of the system, by\nincreasing the number of non-reclaimable pages on the active and\ninactive anon LRU lists.\n\nLast but not least, the swap token code has been broken for a year\nwithout complaints, as reported by Konstantin Khlebnikov.  This suggests\nwe no longer have much use for it.\n\nThe days of sub-1G memory systems with heavy use of swap are over.  If\nwe ever need thrashing reducing code in the future, we will have to\nimplement something that does scale.\n\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: Bob Picco \u003cbpicco@meloft.net\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "904249aa68010c8e223263c922fcbb840a3f42e4",
      "tree": "5476bdf728cd77ac6fcaaeb986df1ddd5c9527d7",
      "parents": [
        "13d518074a952d33d47c428419693f63389547e9"
      ],
      "author": {
        "name": "Ying Han",
        "email": "yinghan@google.com",
        "time": "Wed Apr 25 16:01:48 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 25 21:26:33 2012 -0700"
      },
      "message": "mm: fix up the vmscan stat in vmstat\n\nThe \"pgsteal\" stat is confusing because it counts both direct reclaim as\nwell as background reclaim.  However, we have \"kswapd_steal\" which also\ncounts background reclaim value.\n\nThis patch fixes it and also makes it match the existng \"pgscan_\" stats.\n\nTest:\npgsteal_kswapd_dma32 447623\npgsteal_kswapd_normal 42272677\npgsteal_kswapd_movable 0\npgsteal_direct_dma32 2801\npgsteal_direct_normal 44353270\npgsteal_direct_movable 0\n\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hillf Danton \u003cdhillf@gmail.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Dan Magenheimer \u003cdan.magenheimer@oracle.com\u003e\nReviewed-by: Minchan Kim \u003cminchan@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "41c93088127df2579e8ca64010929ec9e41d5543",
      "tree": "5bbfded1934fc94facbfa892a59874703aa6922a",
      "parents": [
        "66aebce747eaf9bc456bf1f1b217d8db843031d0"
      ],
      "author": {
        "name": "Ying Han",
        "email": "yinghan@google.com",
        "time": "Thu Apr 12 12:49:16 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 12 13:12:12 2012 -0700"
      },
      "message": "Revert \"mm: vmscan: fix misused nr_reclaimed in shrink_mem_cgroup_zone()\"\n\nThis reverts commit c38446cc65e1f2b3eb8630c53943b94c4f65f670.\n\nBefore the commit, the code makes senses to me but not after the commit.\nThe \"nr_reclaimed\" is the number of pages reclaimed by scanning through\nthe memcg\u0027s lru lists.  The \"nr_to_reclaim\" is the target value for the\nwhole function.  For example, we like to early break the reclaim if\nreclaimed 32 pages under direct reclaim (not DEF_PRIORITY).\n\nAfter the reverted commit, the target \"nr_to_reclaim\" is decremented each\ntime by \"nr_reclaimed\" but we still use it to compare the \"nr_reclaimed\".\nIt just doesn\u0027t make sense to me...\n\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Hillf Danton \u003cdhillf@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "496b919b3bdd957d4b1727df79bfa3751bced1c1",
      "tree": "5585608ebdce5a7eca8f5ef334e6b167fcd5aab1",
      "parents": [
        "250f6715a4112d6686670c5a62ceb9305da94616"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Sat Mar 24 10:26:21 2012 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 24 12:18:32 2012 -0700"
      },
      "message": "Fix potential endless loop in kswapd when compaction is not enabled\n\nWe should only test compaction_suitable if the kernel is built with\nCONFIG_COMPACTION, otherwise the stub compaction_suitable function will\nalways return COMPACT_SKIPPED and send kswapd into an infinite loop.\n\nReported-by: Anton Blanchard \u003canton@samba.org\u003e\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "643ac9fc5429e85b8b7f534544b80bcc4f34c367",
      "tree": "f6db7d7e8a08761119d478ef7adf5bef4402f786",
      "parents": [
        "437538267b672f9320833907f1b5acbb2605f4be"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Fri Mar 23 02:57:31 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 23 08:34:40 2012 -0700"
      },
      "message": "mm: fix testorder interaction between two kswapd patches\n\nAdjusting cc715d99e529 \"mm: vmscan: forcibly scan highmem if there are\ntoo many buffer_heads pinning highmem\" for -stable reveals that it was\nslightly wrong once on top of fe2c2a106663 \"vmscan: reclaim at order 0\nwhen compaction is enabled\", which specifically adds testorder for the\nzone_watermark_ok_safe() test.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1480de0340a8d5f094b74d7c4b902456c9a06903",
      "tree": "6a4c4d776b6475d8a35cb4632340227e8ab311c2",
      "parents": [
        "88f6b4c32e531dc5b06bd05144f790847a1fdaeb"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Wed Mar 21 16:34:17 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:55:00 2012 -0700"
      },
      "message": "mm: forbid lumpy-reclaim in shrink_active_list()\n\nReset the reclaim mode in shrink_active_list() to RECLAIM_MODE_SINGLE |\nRECLAIM_MODE_ASYNC.  (sync/async sign is used only in shrink_page_list\nand does not affect shrink_active_list)\n\nCurrenly shrink_active_list() sometimes works in lumpy-reclaim mode, if\nRECLAIM_MODE_LUMPYRECLAIM is left over from an earlier\nshrink_inactive_list().  Meanwhile, in age_active_anon()\nsc-\u003ereclaim_mode is totally zero.  So the current behavior is too\ncomplex and confusing, and this looks like bug.\n\nIn general, shrink_active_list() populates the inactive list for the\nnext shrink_inactive_list().  Lumpy shring_inactive_list() isolates\npages around the chosen one from both the active and inactive lists.\nSo, there is no reason for lumpy isolation in shrink_active_list().\n\nSee also: https://lkml.org/lkml/2012/3/15/583\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nProposed-by: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cc9a6c8776615f9c194ccf0b63a0aa5628235545",
      "tree": "0cbbf118e86541f8eb2fc7b717a0e08eaced986d",
      "parents": [
        "e845e199362cc5712ba0e7eedc14eed70e144258"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Wed Mar 21 16:34:11 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:59 2012 -0700"
      },
      "message": "cpuset: mm: reduce large amounts of memory barrier related damage v3\n\nCommit c0ff7453bb5c (\"cpuset,mm: fix no node to alloc memory when\nchanging cpuset\u0027s mems\") wins a super prize for the largest number of\nmemory barriers entered into fast paths for one commit.\n\n[get|put]_mems_allowed is incredibly heavy with pairs of full memory\nbarriers inserted into a number of hot paths.  This was detected while\ninvestigating at large page allocator slowdown introduced some time\nafter 2.6.32.  The largest portion of this overhead was shown by\noprofile to be at an mfence introduced by this commit into the page\nallocator hot path.\n\nFor extra style points, the commit introduced the use of yield() in an\nimplementation of what looks like a spinning mutex.\n\nThis patch replaces the full memory barriers on both read and write\nsides with a sequence counter with just read barriers on the fast path\nside.  This is much cheaper on some architectures, including x86.  The\nmain bulk of the patch is the retry logic if the nodemask changes in a\nmanner that can cause a false failure.\n\nWhile updating the nodemask, a check is made to see if a false failure\nis a risk.  If it is, the sequence number gets bumped and parallel\nallocators will briefly stall while the nodemask update takes place.\n\nIn a page fault test microbenchmark, oprofile samples from\n__alloc_pages_nodemask went from 4.53% of all samples to 1.15%.  The\nactual results were\n\n                             3.3.0-rc3          3.3.0-rc3\n                             rc3-vanilla        nobarrier-v2r1\n    Clients   1 UserTime       0.07 (  0.00%)   0.08 (-14.19%)\n    Clients   2 UserTime       0.07 (  0.00%)   0.07 (  2.72%)\n    Clients   4 UserTime       0.08 (  0.00%)   0.07 (  3.29%)\n    Clients   1 SysTime        0.70 (  0.00%)   0.65 (  6.65%)\n    Clients   2 SysTime        0.85 (  0.00%)   0.82 (  3.65%)\n    Clients   4 SysTime        1.41 (  0.00%)   1.41 (  0.32%)\n    Clients   1 WallTime       0.77 (  0.00%)   0.74 (  4.19%)\n    Clients   2 WallTime       0.47 (  0.00%)   0.45 (  3.73%)\n    Clients   4 WallTime       0.38 (  0.00%)   0.37 (  1.58%)\n    Clients   1 Flt/sec/cpu  497620.28 (  0.00%) 520294.53 (  4.56%)\n    Clients   2 Flt/sec/cpu  414639.05 (  0.00%) 429882.01 (  3.68%)\n    Clients   4 Flt/sec/cpu  257959.16 (  0.00%) 258761.48 (  0.31%)\n    Clients   1 Flt/sec      495161.39 (  0.00%) 517292.87 (  4.47%)\n    Clients   2 Flt/sec      820325.95 (  0.00%) 850289.77 (  3.65%)\n    Clients   4 Flt/sec      1020068.93 (  0.00%) 1022674.06 (  0.26%)\n    MMTests Statistics: duration\n    Sys Time Running Test (seconds)             135.68    132.17\n    User+Sys Time Running Test (seconds)         164.2    160.13\n    Total Elapsed Time (seconds)                123.46    120.87\n\nThe overall improvement is small but the System CPU time is much\nimproved and roughly in correlation to what oprofile reported (these\nperformance figures are without profiling so skew is expected).  The\nactual number of page faults is noticeably improved.\n\nFor benchmarks like kernel builds, the overall benefit is marginal but\nthe system CPU time is slightly reduced.\n\nTo test the actual bug the commit fixed I opened two terminals.  The\nfirst ran within a cpuset and continually ran a small program that\nfaulted 100M of anonymous data.  In a second window, the nodemask of the\ncpuset was continually randomised in a loop.\n\nWithout the commit, the program would fail every so often (usually\nwithin 10 seconds) and obviously with the commit everything worked fine.\nWith this patch applied, it also worked fine so the fix should be\nfunctionally equivalent.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c7cfa37b7324a190fc36ff116d79d0f899e8d273",
      "tree": "391cf185d299ee0aa892fa59be8910d6f3531356",
      "parents": [
        "9a3c531df9462df6cc2b060f749651723ffc180c"
      ],
      "author": {
        "name": "Copot Alexandru",
        "email": "alex.mihai.c@gmail.com",
        "time": "Wed Mar 21 16:34:10 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:59 2012 -0700"
      },
      "message": "mm/vmscan.c: fix spelling error\n\ns/noticable/noticeable/\n\nSigned-off-by: Copot Alexandru \u003calex.mihai.c@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d563c0501bf8702b9b683206c09b9defb37d8a8a",
      "tree": "ac3c870c1885337e340d807cd8b5dc0ad8eb0315",
      "parents": [
        "978ea78b65794ef07eb66b9946064dea66b52554"
      ],
      "author": {
        "name": "Hillf Danton",
        "email": "dhillf@gmail.com",
        "time": "Wed Mar 21 16:34:02 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:57 2012 -0700"
      },
      "message": "vmscan: handle isolated pages with lru lock released\n\nWhen shrinking inactive lru list, isolated pages are queued on locally\nprivate list, so the lock-hold time could be reduced if pages are counted\nwithout lock protection.\n\nTo achieve that, firstly updating reclaim stat is delayed until the\nputback stage, after reacquiring the lru lock.\n\nSecondly, operations related to vm and zone stats are now proteced with\npreemption disabled as they are per-cpu operations.\n\nSigned-off-by: Hillf Danton \u003cdhillf@gmail.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cc715d99e529d470dde2f33a6614f255adea71f3",
      "tree": "f8e8aefb8416aed6747e9b5c071e9575484aa912",
      "parents": [
        "ce1744f4ed20ca873360e54502f8a71564ef7cc6"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Wed Mar 21 16:34:00 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:57 2012 -0700"
      },
      "message": "mm: vmscan: forcibly scan highmem if there are too many buffer_heads pinning highmem\n\nStuart Foster reported on bugzilla that copying large amounts of data\nfrom NTFS caused an OOM kill on 32-bit X86 with 16G of memory.  Andrew\nMorton correctly identified that the problem was NTFS was using 512\nblocks meaning each page had 8 buffer_heads in low memory pinning it.\n\nIn the past, direct reclaim used to scan highmem even if the allocating\nprocess did not specify __GFP_HIGHMEM but not any more.  kswapd no longer\nwill reclaim from zones that are above the high watermark.  The intention\nin both cases was to minimise unnecessary reclaim.  The downside is on\nmachines with large amounts of highmem that lowmem can be fully consumed\nby buffer_heads with nothing trying to free them.\n\nThe following patch is based on a suggestion by Andrew Morton to extend\nthe buffer_heads_over_limit case to force kswapd and direct reclaim to\nscan the highmem zone regardless of the allocation request or watermarks.\n\nAddresses https://bugzilla.kernel.org/show_bug.cgi?id\u003d42578\n\n[hughd@google.com: move buffer_heads_over_limit check up]\n[akpm@linux-foundation.org: buffer_heads_over_limit is unlikely]\nReported-by: Stuart Foster \u003csmf.linux@ntlworld.com\u003e\nTested-by: Stuart Foster \u003csmf.linux@ntlworld.com\u003e\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: stable \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "aff622495c9a0b56148192e53bdec539f5e147f2",
      "tree": "78f6400d8b6bec3279483006a0e9543e47aa833e",
      "parents": [
        "7be62de99adcab4449d416977b4274985c5fe023"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Wed Mar 21 16:33:52 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:56 2012 -0700"
      },
      "message": "vmscan: only defer compaction for failed order and higher\n\nCurrently a failed order-9 (transparent hugepage) compaction can lead to\nmemory compaction being temporarily disabled for a memory zone.  Even if\nwe only need compaction for an order 2 allocation, eg.  for jumbo frames\nnetworking.\n\nThe fix is relatively straightforward: keep track of the highest order at\nwhich compaction is succeeding, and only defer compaction for orders at\nwhich compaction is failing.\n\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Hillf Danton \u003cdhillf@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7be62de99adcab4449d416977b4274985c5fe023",
      "tree": "20ae021ec9811ad730e6a17a3530d3aa6b5027d0",
      "parents": [
        "fe2c2a106663130a5ab45cb0e3414b52df2fff0c"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Wed Mar 21 16:33:52 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:56 2012 -0700"
      },
      "message": "vmscan: kswapd carefully call compaction\n\nWith CONFIG_COMPACTION enabled, kswapd does not try to free contiguous\nfree pages, even when it is woken for a higher order request.\n\nThis could be bad for eg.  jumbo frame network allocations, which are done\nfrom interrupt context and cannot compact memory themselves.  Higher than\nbefore allocation failure rates in the network receive path have been\nobserved in kernels with compaction enabled.\n\nTeach kswapd to defragment the memory zones in a node, but only if\nrequired and compaction is not deferred in a zone.\n\n[akpm@linux-foundation.org: reduce scope of zones_need_compaction]\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Hillf Danton \u003cdhillf@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fe2c2a106663130a5ab45cb0e3414b52df2fff0c",
      "tree": "4c2651ee4e33c73069bc41fa936b5227c9d9f2a9",
      "parents": [
        "67f96aa252e606cdf6c3cf1032952ec207ec0cf0"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Wed Mar 21 16:33:51 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:56 2012 -0700"
      },
      "message": "vmscan: reclaim at order 0 when compaction is enabled\n\nWhen built with CONFIG_COMPACTION, kswapd should not try to free\ncontiguous pages, because it is not trying hard enough to have a real\nchance at being successful, but still disrupts the LRU enough to break\nother things.\n\nDo not do higher order page isolation unless we really are in lumpy\nreclaim mode.\n\nStop reclaiming pages once we have enough free pages that compaction can\ndeal with things, and we hit the normal order 0 watermarks used by kswapd.\n\nAlso remove a line of code that increments balanced right before exiting\nthe function.\n\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Hillf Danton \u003cdhillf@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c38446cc65e1f2b3eb8630c53943b94c4f65f670",
      "tree": "0eb0e73d2bef37bc1ce8212bf5dd43abdc2b5328",
      "parents": [
        "69c978232aaa99476f9bd002c2a29a84fa3779b5"
      ],
      "author": {
        "name": "Hillf Danton",
        "email": "dhillf@gmail.com",
        "time": "Wed Mar 21 16:33:50 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:56 2012 -0700"
      },
      "message": "mm: vmscan: fix misused nr_reclaimed in shrink_mem_cgroup_zone()\n\nThe value of nr_reclaimed is the number of pages reclaimed in the current\nround of the loop, whereas nr_to_reclaim should be compared with the\nnumber of pages reclaimed in all rounds.\n\nIn each round of the loop, reclaimed pages are cut off from the reclaim\ngoal, and the loop stops once the goal achieved.\n\nSigned-off-by: Hillf Danton \u003cdhillf@gmail.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6131728914810a6c02e08750e13e45870101e862",
      "tree": "d96768dccd30bc5c84cfd39594167efd6405782d",
      "parents": [
        "c3f0327f8e9d7a503f0d64573c311eddd61f197d"
      ],
      "author": {
        "name": "Hillf Danton",
        "email": "dhillf@gmail.com",
        "time": "Wed Mar 21 16:33:48 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:55 2012 -0700"
      },
      "message": "mm/vmscan.c: cleanup with s/reclaim_mode/isolate_mode/\n\nWith tons of reclaim_mode (defined as one field of struct scan_control)\nalready in the file, it is clearer to rename the local reclaim_mode when\nsetting up the isolation mode.\n\nSigned-off-by: Hillf Danton \u003cdhillf@gmail.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "245132643e1cfcd145bbc86a716c1818371fcb93",
      "tree": "e5bf3cb56efedb059b1a68fd8efd37482131783b",
      "parents": [
        "85046579bde15e532983438f86b36856e358f417"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Fri Jan 20 14:34:21 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 23 08:38:48 2012 -0800"
      },
      "message": "SHM_UNLOCK: fix Unevictable pages stranded after swap\n\nCommit cc39c6a9bbde (\"mm: account skipped entries to avoid looping in\nfind_get_pages\") correctly fixed an infinite loop; but left a problem\nthat find_get_pages() on shmem would return 0 (appearing to callers to\nmean end of tree) when it meets a run of nr_pages swap entries.\n\nThe only uses of find_get_pages() on shmem are via pagevec_lookup(),\ncalled from invalidate_mapping_pages(), and from shmctl SHM_UNLOCK\u0027s\nscan_mapping_unevictable_pages().  The first is already commented, and\nnot worth worrying about; but the second can leave pages on the\nUnevictable list after an unusual sequence of swapping and locking.\n\nFix that by using shmem_find_get_pages_and_swap() (then ignoring the\nswap) instead of pagevec_lookup().\n\nBut I don\u0027t want to contaminate vmscan.c with shmem internals, nor\nshmem.c with LRU locking.  So move scan_mapping_unevictable_pages() into\nshmem.c, renaming it shmem_unlock_mapping(); and rename\ncheck_move_unevictable_page() to check_move_unevictable_pages(), looping\ndown an array of pages, oftentimes under the same lock.\n\nLeave out the \"rotate unevictable list\" block: that\u0027s a leftover from\nwhen this was used for /proc/sys/vm/scan_unevictable_pages, whose flawed\nhandling involved looking at pages at tail of LRU.\n\nWas there significance to the sequence first ClearPageUnevictable, then\ntest page_evictable, then SetPageUnevictable here? I think not, we\u0027re\nunder LRU lock, and have no barriers between those.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e [back to 3.1 but will need respins]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "85046579bde15e532983438f86b36856e358f417",
      "tree": "9b80b31791e63520277617a5abe85692dc480cd0",
      "parents": [
        "cb78edfdcef5259ac9e9088bd63810d21299928d"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Fri Jan 20 14:34:19 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 23 08:38:48 2012 -0800"
      },
      "message": "SHM_UNLOCK: fix long unpreemptible section\n\nscan_mapping_unevictable_pages() is used to make SysV SHM_LOCKed pages\nevictable again once the shared memory is unlocked.  It does this with\npagevec_lookup()s across the whole object (which might occupy most of\nmemory), and takes 300ms to unlock 7GB here.  A cond_resched() every\nPAGEVEC_SIZE pages would be good.\n\nHowever, KOSAKI-san points out that this is called under shmem.c\u0027s\ninfo-\u003elock, and it\u0027s also under shm.c\u0027s shm_lock(), both spinlocks.\nThere is no strong reason for that: we need to take these pages off the\nunevictable list soonish, but those locks are not required for it.\n\nSo move the call to scan_mapping_unevictable_pages() from shmem.c\u0027s\nunlock handling up to shm.c\u0027s unlock handling.  Remove the recently\nadded barrier, not needed now we have spin_unlock() before the scan.\n\nUse get_file(), with subsequent fput(), to make sure we have a reference\nto mapping throughout scan_mapping_unevictable_pages(): that\u0027s something\nthat was previously guaranteed by the shm_lock().\n\nRemove shmctl\u0027s lru_add_drain_all(): we don\u0027t fault in pages at SHM_LOCK\ntime, and we lazily discover them to be Unevictable later, so it serves\nno purpose for SHM_LOCK; and serves no purpose for SHM_UNLOCK, since\npages still on pagevec are not marked Unevictable.\n\nThe original code avoided redundant rescans by checking VM_LOCKED flag\nat its level: now avoid them by checking shp\u0027s SHM_LOCKED.\n\nThe original code called scan_mapping_unevictable_pages() on a locked\narea at shm_destroy() time: perhaps we once had accounting cross-checks\nwhich required that, but not now, so skip the overhead and just let\ninode eviction deal with them.\n\nPut check_move_unevictable_page() and scan_mapping_unevictable_pages()\nunder CONFIG_SHMEM (with stub for the TINY case when ramfs is used),\nmore as comment than to save space; comment them used for SHM_UNLOCK.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Michel Lespinasse \u003cwalken@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3f79768f239746d19accd88da96263ef35d6a219",
      "tree": "08c9dd76fb61386de4c26c393263c1cfc1d0b874",
      "parents": [
        "f626012db08b9ea71363327d81fe60c2782eea9f"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Thu Jan 12 17:20:07 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:10 2012 -0800"
      },
      "message": "mm: rearrange putback_inactive_pages\n\nThere is sometimes confusion between the global putback_lru_pages() in\nmigrate.c and the static putback_lru_pages() in vmscan.c: rename the\nlatter putback_inactive_pages(): it helps shrink_inactive_list() rather as\nmove_active_pages_to_lru() helps shrink_active_list().\n\nRemove unused scan_control arg from putback_inactive_pages() and from\nupdate_isolated_counts().  Move clear_active_flags() inside\nupdate_isolated_counts().  Move NR_ISOLATED accounting up into\nshrink_inactive_list() itself, so the balance is clearer.\n\nDo the spin_lock_irq() before calling putback_inactive_pages() and\nspin_unlock_irq() after return from it, so that it better matches\nupdate_isolated_counts() and move_active_pages_to_lru().\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f626012db08b9ea71363327d81fe60c2782eea9f",
      "tree": "3171843ead87fc7a3a959be802638205a473da56",
      "parents": [
        "1c1c53d43b387d02174911ecb42ce846577b0ea0"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Thu Jan 12 17:20:06 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:10 2012 -0800"
      },
      "message": "mm: remove isolate_pages()\n\nThe isolate_pages() level in vmscan.c offers little but indirection: merge\nit into isolate_lru_pages() as the compiler does, and use the names\nnr_to_scan and nr_scanned in each case.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4111304dab198c687bc60f2e235a9f7ee92c47c8",
      "tree": "c98fbae214f73f8475bcdc54c8116dea82cd7d14",
      "parents": [
        "4d06f382c733f99ec67df006255e87525ac1efd3"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Thu Jan 12 17:20:01 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:10 2012 -0800"
      },
      "message": "mm: enum lru_list lru\n\nMostly we use \"enum lru_list lru\": change those few \"l\"s to \"lru\"s.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2bcf887963812c075f80a14e1fad8ec7e1c67acf",
      "tree": "132f11eefe904653307a05b77d16f4c41866e486",
      "parents": [
        "90b3feaec8ffb167abd8903bf111605c2f035aa8"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Thu Jan 12 17:19:56 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:10 2012 -0800"
      },
      "message": "mm: take pagevecs off reclaim stack\n\nReplace pagevecs in putback_lru_pages() and move_active_pages_to_lru()\nby lists of pages_to_free: then apply Konstantin Khlebnikov\u0027s\nfree_hot_cold_page_list() to them instead of pagevec_release().\n\nWhich simplifies the flow (no need to drop and retake lock whenever\npagevec fills up) and reduces stale addresses in stack backtraces\n(which often showed through the pagevecs); but more importantly,\nremoves another 120 bytes from the deepest stacks in page reclaim.\nAlthough I\u0027ve not recently seen an actual stack overflow here with\na vanilla kernel, move_active_pages_to_lru() has often featured in\ndeep backtraces.\n\nHowever, free_hot_cold_page_list() does not handle compound pages\n(nor need it: a Transparent HugePage would have been split by the\ntime it reaches the call in shrink_page_list()), but it is possible\nfor putback_lru_pages() or move_active_pages_to_lru() to be left\nholding the last reference on a THP, so must exclude the unlikely\ncompound case before putting on pages_to_free.\n\nRemove pagevec_strip(), its work now done in move_active_pages_to_lru().\nThe pagevec in scan_mapping_unevictable_pages() remains in mm/vmscan.c,\nbut that is never on the reclaim path, and cannot be replaced by a list.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0cee34fd72c582b4f8ad8ce00645b75fb4168199",
      "tree": "3b3bd79df0a2ebc869dba091d922c252784ffd23",
      "parents": [
        "fe4b1b244bdb96136855f2c694071cb09d140766"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Thu Jan 12 17:19:49 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:09 2012 -0800"
      },
      "message": "mm: vmscan: check if reclaim should really abort even if compaction_ready() is true for one zone\n\nIf compaction can proceed for a given zone, shrink_zones() does not\nreclaim any more pages from it.  After commit [e0c2327: vmscan: abort\nreclaim/compaction if compaction can proceed], do_try_to_free_pages()\ntries to finish as soon as possible once one zone can compact.\n\nThis was intended to prevent slabs being shrunk unnecessarily but there\nare side-effects.  One is that a small zone that is ready for compaction\nwill abort reclaim even if the chances of successfully allocating a THP\nfrom that zone is small.  It also means that reclaim can return too early\neven though sc-\u003enr_to_reclaim pages were not reclaimed.\n\nThis partially reverts the commit until it is proven that slabs are really\nbeing shrunk unnecessarily but preserves the check to return 1 to avoid\nOOM if reclaim was aborted prematurely.\n\n[aarcange@redhat.com: This patch replaces a revert from Andrea]\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Dave Jones \u003cdavej@redhat.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Andy Isaacson \u003cadi@hexapodia.org\u003e\nCc: Nai Xia \u003cnai.xia@gmail.com\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fe4b1b244bdb96136855f2c694071cb09d140766",
      "tree": "c1fafe7ef5b5bd7c77ae981b47fa82916e0436eb",
      "parents": [
        "a6bc32b899223a877f595ef9ddc1e89ead5072b8"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Thu Jan 12 17:19:45 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:09 2012 -0800"
      },
      "message": "mm: vmscan: when reclaiming for compaction, ensure there are sufficient free pages available\n\nIn commit e0887c19 (\"vmscan: limit direct reclaim for higher order\nallocations\"), Rik noted that reclaim was too aggressive when THP was\nenabled.  In his initial patch he used the number of free pages to decide\nif reclaim should abort for compaction.  My feedback was that reclaim and\ncompaction should be using the same logic when deciding if reclaim should\nbe aborted.\n\nUnfortunately, this had the effect of reducing THP success rates when the\nworkload included something like streaming reads that continually\nallocated pages.  The window during which compaction could run and return\na THP was too small.\n\nThis patch combines Rik\u0027s two patches together.  compaction_suitable() is\nstill used to decide if reclaim should be aborted to allow compaction is\nused.  However, it will also ensure that there is a reasonable buffer of\nfree pages available.  This improves upon the THP allocation success rates\nbut bounds the number of pages that are freed for compaction.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Rik van Riel\u003criel@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Dave Jones \u003cdavej@redhat.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Andy Isaacson \u003cadi@hexapodia.org\u003e\nCc: Nai Xia \u003cnai.xia@gmail.com\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c82449352854ff09e43062246af86bdeb628f0c3",
      "tree": "9cb8052e425c8cdab24ac41e83bbb672832ce54e",
      "parents": [
        "b969c4ab9f182a6e1b2a0848be349f99714947b0"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Thu Jan 12 17:19:38 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:09 2012 -0800"
      },
      "message": "mm: compaction: make isolate_lru_page() filter-aware again\n\nCommit 39deaf85 (\"mm: compaction: make isolate_lru_page() filter-aware\")\nnoted that compaction does not migrate dirty or writeback pages and that\nis was meaningless to pick the page and re-add it to the LRU list.  This\nhad to be partially reverted because some dirty pages can be migrated by\ncompaction without blocking.\n\nThis patch updates \"mm: compaction: make isolate_lru_page\" by skipping\nover pages that migration has no possibility of migrating to minimise LRU\ndisruption.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Rik van Riel\u003criel@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nReviewed-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Dave Jones \u003cdavej@redhat.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Andy Isaacson \u003cadi@hexapodia.org\u003e\nCc: Nai Xia \u003cnai.xia@gmail.com\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7335084d446b83cbcb15da80497d03f0c1dc9e21",
      "tree": "1bc34f3cc12a4f6fce19b8eeaed52dc3e4202b5b",
      "parents": [
        "5013473152d1ac9d44d787fb02edda845fdf2cb3"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Thu Jan 12 17:19:33 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:09 2012 -0800"
      },
      "message": "mm: vmscan: do not OOM if aborting reclaim to start compaction\n\nDuring direct reclaim it is possible that reclaim will be aborted so that\ncompaction can be attempted to satisfy a high-order allocation.  If this\ndecision is made before any pages are reclaimed, it is possible that 0 is\nreturned to the page allocator potentially triggering an OOM.  This has\nnot been observed but it is a possibility so this patch addresses it.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Dave Jones \u003cdavej@redhat.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Andy Isaacson \u003cadi@hexapodia.org\u003e\nCc: Nai Xia \u003cnai.xia@gmail.com\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5013473152d1ac9d44d787fb02edda845fdf2cb3",
      "tree": "639d241cdc804f09d56caf8ff844e09291b99170",
      "parents": [
        "b16d3d5a5219d01e9be5e586e5d50fbf1ca955ea"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 12 17:19:29 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:08 2012 -0800"
      },
      "message": "mm: vmscan: check if we isolated a compound page during lumpy scan\n\nProperly take into account if we isolated a compound page during the lumpy\nscan in reclaim and skip over the tail pages when encountered.  This\ncorrects the values given to the tracepoint for number of lumpy pages\nisolated and will avoid breaking the loop early if compound pages smaller\nthan the requested allocation size are requested.\n\n[mgorman@suse.de: Updated changelog]\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Dave Jones \u003cdavej@redhat.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Andy Isaacson \u003cadi@hexapodia.org\u003e\nCc: Nai Xia \u003cnai.xia@gmail.com\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ea4d349ffa8028c655236497c2ba17c17aaa0d65",
      "tree": "b983961282dea73db03a1257fa4aaec109aee5cc",
      "parents": [
        "45676885b76237a4c236d26fe20a9b0cfdb2eb22"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Thu Jan 12 17:19:20 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:08 2012 -0800"
      },
      "message": "vmscan/trace: Add \u0027file\u0027 info to trace_mm_vmscan_lru_isolate()\n\nIn trace_mm_vmscan_lru_isolate(), we don\u0027t output \u0027file\u0027 information to\nthe trace event and it is a bit inconvenient for the user to get the\nreal information(like pasted below).  mm_vmscan_lru_isolate:\nisolate_mode\u003d2 order\u003d0 nr_requested\u003d32 nr_scanned\u003d32 nr_taken\u003d32\ncontig_taken\u003d0 contig_dirty\u003d0 contig_failed\u003d0\n\n\u0027active\u0027 can be obtained by analyzing mode(Thanks go to Minchan and\nMel), So this patch adds \u0027file\u0027 to the trace event and it now looks\nlike: mm_vmscan_lru_isolate: isolate_mode\u003d2 order\u003d0 nr_requested\u003d32\nnr_scanned\u003d32 nr_taken\u003d32 contig_taken\u003d0 contig_dirty\u003d0 contig_failed\u003d0\nfile\u003d0\n\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "72835c86ca15d0126354b73d5f29ce9194931c9b",
      "tree": "369f31168b405e4d597b3cd067a1fd0ac2025dbc",
      "parents": [
        "ec0fffd84b162e0563a28a81aa049f946b31a8e2"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "jweiner@redhat.com",
        "time": "Thu Jan 12 17:18:32 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:06 2012 -0800"
      },
      "message": "mm: unify remaining mem_cont, mem, etc. variable names to memcg\n\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.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"
    },
    {
      "commit": "925b7673cce39116ce61e7a06683a4a0dad1e72a",
      "tree": "66c134db836e531e196ee3dfc23c124ff74ac827",
      "parents": [
        "6290df545814990ca2663baf6e894669132d5f73"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "jweiner@redhat.com",
        "time": "Thu Jan 12 17:18:15 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:05 2012 -0800"
      },
      "message": "mm: make per-memcg LRU lists exclusive\n\nNow that all code that operated on global per-zone LRU lists is\nconverted to operate on per-memory cgroup LRU lists instead, there is no\nreason to keep the double-LRU scheme around any longer.\n\nThe pc-\u003elru member is removed and page-\u003elru is linked directly to the\nper-memory cgroup LRU lists, which removes two pointers from a\ndescriptor that exists for every page frame in the system.\n\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nReviewed-by: Kirill A. Shutemov \u003ckirill@shutemov.name\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6290df545814990ca2663baf6e894669132d5f73",
      "tree": "c62472270ba81a7146bed0854be74e2e2338c629",
      "parents": [
        "b95a2f2d486d0d768a92879c023a03757b9c7e58"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "jweiner@redhat.com",
        "time": "Thu Jan 12 17:18:10 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:05 2012 -0800"
      },
      "message": "mm: collect LRU list heads into struct lruvec\n\nHaving a unified structure with a LRU list set for both global zones and\nper-memcg zones allows to keep that code simple which deals with LRU\nlists and does not care about the container itself.\n\nOnce the per-memcg LRU lists directly link struct pages, the isolation\nfunction and all other list manipulations are shared between the memcg\ncase and the global LRU case.\n\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nReviewed-by: Kirill A. Shutemov \u003ckirill@shutemov.name\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\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"
    },
    {
      "commit": "b95a2f2d486d0d768a92879c023a03757b9c7e58",
      "tree": "4f07a63d7587131bd82c49e0d9ac124d057539fd",
      "parents": [
        "ad2b8e601099a23dffffb53f91c18d874fe98854"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "jweiner@redhat.com",
        "time": "Thu Jan 12 17:18:06 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:05 2012 -0800"
      },
      "message": "mm: vmscan: convert global reclaim to per-memcg LRU lists\n\nThe global per-zone LRU lists are about to go away on memcg-enabled\nkernels, global reclaim must be able to find its pages on the per-memcg\nLRU lists.\n\nSince the LRU pages of a zone are distributed over all existing memory\ncgroups, a scan target for a zone is complete when all memory cgroups\nare scanned for their proportional share of a zone\u0027s memory.\n\nThe forced scanning of small scan targets from kswapd is limited to\nzones marked unreclaimable, otherwise kswapd can quickly overreclaim by\nforce-scanning the LRU lists of multiple memory cgroups.\n\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nReviewed-by: Kirill A. Shutemov \u003ckirill@shutemov.name\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\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"
    },
    {
      "commit": "5660048ccac8735d9bc0a46325a02e6a6518b5b2",
      "tree": "4b2269ddd6ca001843187a89fb91278192028d87",
      "parents": [
        "527a5ec9a53471d855291ba9f1fdf1dd4e12a184"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "jweiner@redhat.com",
        "time": "Thu Jan 12 17:17:59 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:05 2012 -0800"
      },
      "message": "mm: move memcg hierarchy reclaim to generic reclaim code\n\nMemory cgroup limit reclaim and traditional global pressure reclaim will\nsoon share the same code to reclaim from a hierarchical tree of memory\ncgroups.\n\nIn preparation of this, move the two right next to each other in\nshrink_zone().\n\nThe mem_cgroup_hierarchical_reclaim() polymath is split into a soft\nlimit reclaim function, which still does hierarchy walking on its own,\nand a limit (shrinking) reclaim function, which relies on generic\nreclaim code to walk the hierarchy.\n\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nReviewed-by: Kirill A. Shutemov \u003ckirill@shutemov.name\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\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"
    },
    {
      "commit": "f16015fbf2f6ac45505d6ad21455ff9f6c14473d",
      "tree": "ad9c7574566ed492f2b2d9ff655bb90773442c05",
      "parents": [
        "89b5fae5368f6aec62fb09c8e19b6c61f1154603"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "jweiner@redhat.com",
        "time": "Thu Jan 12 17:17:52 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:04 2012 -0800"
      },
      "message": "mm: vmscan: distinguish between memcg triggering reclaim and memcg being scanned\n\nMemory cgroup hierarchies are currently handled completely outside of\nthe traditional reclaim code, which is invoked with a single memory\ncgroup as an argument for the whole call stack.\n\nSubsequent patches will switch this code to do hierarchical reclaim, so\nthere needs to be a distinction between a) the memory cgroup that is\ntriggering reclaim due to hitting its limit and b) the memory cgroup\nthat is being scanned as a child of a).\n\nThis patch introduces a struct mem_cgroup_zone that contains the\ncombination of the memory cgroup and the zone being scanned, which is\nthen passed down the stack instead of the zone argument.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nReviewed-by: Kirill A. Shutemov \u003ckirill@shutemov.name\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\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"
    },
    {
      "commit": "89b5fae5368f6aec62fb09c8e19b6c61f1154603",
      "tree": "48ba5619b31b54941ad127acc1c11edfd9701fe9",
      "parents": [
        "9f3a0d0933de079665ec1b498947ffbf805b0018"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "jweiner@redhat.com",
        "time": "Thu Jan 12 17:17:50 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:04 2012 -0800"
      },
      "message": "mm: vmscan: distinguish global reclaim from global LRU scanning\n\nThe traditional zone reclaim code is scanning the per-zone LRU lists\nduring direct reclaim and kswapd, and the per-zone per-memory cgroup LRU\nlists when reclaiming on behalf of a memory cgroup limit.\n\nSubsequent patches will convert the traditional reclaim code to reclaim\nexclusively from the per-memory cgroup LRU lists.  As a result, using\nthe predicate for which LRU list is scanned will no longer be\nappropriate to tell global reclaim from limit reclaim.\n\nThis patch adds a global_reclaim() predicate to tell direct/kswapd\nreclaim from memory cgroup limit reclaim and substitutes it in all\nplaces where currently scanning_global_lru() is used for that.\n\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nReviewed-by: Kirill A. Shutemov \u003ckirill@shutemov.name\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\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"
    },
    {
      "commit": "3770490ec82ca63d5fdcebeb95f2f68af2626357",
      "tree": "4bbd061f44be4250394f4d580d169efaf07a7368",
      "parents": [
        "043bcbe5ec51e0478ef2b44acef17193e01d7f70"
      ],
      "author": {
        "name": "Hillf Danton",
        "email": "dhillf@gmail.com",
        "time": "Tue Jan 10 15:08:36 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:30:46 2012 -0800"
      },
      "message": "mm: vmscan: fix typo in isolating lru pages\n\nIt is not the tag page but the cursor page that we should process, and it\nlooks a typo.\n\nSigned-off-by: Hillf Danton \u003cdhillf@gmail.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "043bcbe5ec51e0478ef2b44acef17193e01d7f70",
      "tree": "4b93556acfdd790ea3e85ed60240134bd06c0d1b",
      "parents": [
        "faed836a2371a96901057f310e436a09eded94fd"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Tue Jan 10 15:08:33 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:30:46 2012 -0800"
      },
      "message": "mm: test PageSwapBacked in lumpy reclaim\n\nLumpy reclaim does well to stop at a PageAnon when there\u0027s no swap, but\nbetter is to stop at any PageSwapBacked, which includes shmem/tmpfs too.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Minchan Kim \u003cminchan@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "86cfd3a45042ab242d47f3935a02811a402beab6",
      "tree": "bd189c05dc3176f2193192ecea01f6b3a1ff8c71",
      "parents": [
        "799f933a82d878d7f15215473c5561ce984ada75"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan@kernel.org",
        "time": "Tue Jan 10 15:08:18 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:30:45 2012 -0800"
      },
      "message": "mm/vmscan.c: consider swap space when deciding whether to continue reclaim\n\nIt\u0027s pointless to continue reclaiming when we have no swap space and lots\nof anon pages in the inactive list.\n\nWithout this patch, it is possible when swap is disabled to continue\ntrying to reclaim when there are only anonymous pages in the system even\nthough that will not make any progress.\n\nSigned-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "25bd91bd27820d5971258cecd1c0e64b0e485144",
      "tree": "dab03e7e19132c6e630d9e65baa125d60825bbd9",
      "parents": [
        "f6d7e0cb3ecc248e98fa11d83253f6174bd7e085"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Jan 10 15:07:40 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:30:43 2012 -0800"
      },
      "message": "vmscan: add task name to warn_scan_unevictable() messages\n\nIf we need to know a usecase, caller program name is critical important.\nShow it.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nDavid Rientjes \u003crientjes@google.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cc59850ef940e4ee6a765d28b439b9bafe07cf63",
      "tree": "03b666986e9cc7dfc113a14721c44aa9e149f871",
      "parents": [
        "c909e99364c8b6ca07864d752950b6b4ecf6bef4"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue Jan 10 15:07:04 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:30:41 2012 -0800"
      },
      "message": "mm: add free_hot_cold_page_list() helper\n\nThis patch adds helper free_hot_cold_page_list() to free list of 0-order\npages.  It frees pages directly from list without temporary page-vector.\nIt also calls trace_mm_pagevec_free() to simulate pagevec_free()\nbehaviour.\n\nbloat-o-meter:\n\nadd/remove: 1/1 grow/shrink: 1/3 up/down: 267/-295 (-28)\nfunction                                     old     new   delta\nfree_hot_cold_page_list                        -     264    +264\nget_page_from_freelist                      2129    2132      +3\n__pagevec_free                               243     239      -4\nsplit_free_page                              380     373      -7\nrelease_pages                                606     510     -96\nfree_page_list                               188       -    -188\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: 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"
    },
    {
      "commit": "c909e99364c8b6ca07864d752950b6b4ecf6bef4",
      "tree": "9942e7a9aeac9a334bb7b4a01c4add8e927b6218",
      "parents": [
        "34dbc67a644f11ab3475d822d72e25409911e760"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue Jan 10 15:07:03 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:30:41 2012 -0800"
      },
      "message": "vmscan: activate executable pages after first usage\n\nLogic added in commit 8cab4754d24a0 (\"vmscan: make mapped executable pages\nthe first class citizen\") was noticeably weakened in commit\n645747462435d84 (\"vmscan: detect mapped file pages used only once\").\n\nCurrently these pages can become \"first class citizens\" only after second\nusage.  After this patch page_check_references() will activate they after\nfirst usage, and executable code gets yet better chance to stay in memory.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Pekka Enberg \u003cpenberg@kernel.org\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "34dbc67a644f11ab3475d822d72e25409911e760",
      "tree": "56673160df54f71d71bcf91ac5328ec225c28c98",
      "parents": [
        "1edf223485c42c99655dcd001db1e46ad5e5d2d7"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue Jan 10 15:06:59 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:30:41 2012 -0800"
      },
      "message": "vmscan: promote shared file mapped pages\n\nCommit 645747462435 (\"vmscan: detect mapped file pages used only once\")\ngreatly decreases lifetime of single-used mapped file pages.\nUnfortunately it also decreases life time of all shared mapped file\npages.  Because after commit bf3f3bc5e7347 (\"mm: don\u0027t mark_page_accessed\nin fault path\") page-fault handler does not mark page active or even\nreferenced.\n\nThus page_check_references() activates file page only if it was used twice\nwhile it stays in inactive list, meanwhile it activates anon pages after\nfirst access.  Inactive list can be small enough, this way reclaimer can\naccidentally throw away any widely used page if it wasn\u0027t used twice in\nshort period.\n\nAfter this patch page_check_references() also activate file mapped page at\nfirst inactive list scan if this page is already used multiple times via\nseveral ptes.\n\nI found this while trying to fix degragation in rhel6 (~2.6.32) from rhel5\n(~2.6.18).  There a complete mess with \u003e100 web/mail/spam/ftp containers,\nthey share all their files but there a lot of anonymous pages: ~500mb\nshared file mapped memory and 15-20Gb non-shared anonymous memory.  In\nthis situation major-pagefaults are very costly, because all containers\nshare the same page.  In my load kernel created a disproportionate\npressure on the file memory, compared with the anonymous, they equaled\nonly if I raise swappiness up to 150 \u003d)\n\nThese patches actually wasn\u0027t helped a lot in my problem, but I saw\nnoticable (10-20 times) reduce in count and average time of\nmajor-pagefault in file-mapped areas.\n\nActually both patches are fixes for commit v2.6.33-5448-g6457474, because\nit was aimed at one scenario (singly used pages), but it breaks the logic\nin other scenarios (shared and/or executable pages)\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nAcked-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\nAcked-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ff4b8a57f0aaa2882d444ca44b2b9b333d22a4df",
      "tree": "d851c923f85566572112d4c0f884cff388a3cc05",
      "parents": [
        "805a6af8dba5dfdd35ec35dc52ec0122400b2610",
        "ea04018e6bc5ddb2f0466c0e5b986bd4901b7e8e"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Jan 06 11:42:52 2012 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Jan 06 11:42:52 2012 -0800"
      },
      "message": "Merge branch \u0027driver-core-next\u0027 into Linux 3.2\n\nThis resolves the conflict in the arch/arm/mach-s3c64xx/s3c6400.c file,\nand it fixes the build error in the arch/x86/kernel/microcode_core.c\nfile, that the merge did not catch.\n\nThe microcode_core.c patch was provided by Stephen Rothwell\n\u003csfr@canb.auug.org.au\u003e who was invaluable in the merge issues involved\nwith the large sysdev removal process in the driver-core tree.\n\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "10fbcf4c6cb122005cdf36fc24d7683da92c7a27",
      "tree": "1a2ad572b421d576e14dbf006ecb321a53063f0c",
      "parents": [
        "8a25a2fd126c621f44f3aeaef80d51f00fc11639"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Wed Dec 21 14:48:43 2011 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Dec 21 14:48:43 2011 -0800"
      },
      "message": "convert \u0027memory\u0027 sysdev_class to a regular subsystem\n\nThis moves the \u0027memory sysdev_class\u0027 over to a regular \u0027memory\u0027 subsystem\nand converts the devices to regular devices. The sysdev drivers are\nimplemented as subsystem interfaces now.\n\nAfter all sysdev classes are ported to regular driver core entities, the\nsysdev implementation will be entirely removed from the kernel.\n\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "83aeeada7c69f35e5100b27ec354335597a7a488",
      "tree": "44644e68f303368feba7c8ba3e0e0991d6238ada",
      "parents": [
        "635697c663f38106063d5659f0cf2e45afcd4bb5"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Thu Dec 08 14:33:54 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 09 07:50:27 2011 -0800"
      },
      "message": "vmscan: use atomic-long for shrinker batching\n\nUse atomic-long operations instead of looping around cmpxchg().\n\n[akpm@linux-foundation.org: massage atomic.h inclusions]\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "635697c663f38106063d5659f0cf2e45afcd4bb5",
      "tree": "3aba50aabc16eeb63d5e21979a3fdf163ccabda2",
      "parents": [
        "09d9673d53005fdf40de4c759425893904292236"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Thu Dec 08 14:33:51 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 09 07:50:27 2011 -0800"
      },
      "message": "vmscan: fix initial shrinker size handling\n\nA shrinker function can return -1, means that it cannot do anything\nwithout a risk of deadlock.  For example prune_super() does this if it\ncannot grab a superblock refrence, even if nr_to_scan\u003d0.  Currently we\ninterpret this -1 as a ULONG_MAX size shrinker and evaluate `total_scan\u0027\naccording to this.  So the next time around this shrinker can cause\nreally big pressure.  Let\u0027s skip such shrinkers instead.\n\nAlso make total_scan signed, otherwise the check (total_scan \u003c 0) below\nnever works.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "208bca0860406d16398145ddd950036a737c3c9d",
      "tree": "7797a16c17d8bd155120126fa7976727fc6de013",
      "parents": [
        "6aad3738f6a79fd0ca480eaceefe064cc471f6eb",
        "0e175a1835ffc979e55787774e58ec79e41957d7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:02:23 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:02:23 2011 -0800"
      },
      "message": "Merge branch \u0027writeback-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux\n\n* \u0027writeback-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux:\n  writeback: Add a \u0027reason\u0027 to wb_writeback_work\n  writeback: send work item to queue_io, move_expired_inodes\n  writeback: trace event balance_dirty_pages\n  writeback: trace event bdi_dirty_ratelimit\n  writeback: fix ppc compile warnings on do_div(long long, unsigned long)\n  writeback: per-bdi background threshold\n  writeback: dirty position control - bdi reserve area\n  writeback: control dirty pause time\n  writeback: limit max dirty pause time\n  writeback: IO-less balance_dirty_pages()\n  writeback: per task dirty rate limit\n  writeback: stabilize bdi-\u003edirty_ratelimit\n  writeback: dirty rate control\n  writeback: add bg_threshold parameter to __bdi_update_bandwidth()\n  writeback: dirty position control\n  writeback: account per-bdi accumulated dirtied pages\n"
    },
    {
      "commit": "9b272977e3b99a8699361d214b51f98c8a9e0e7b",
      "tree": "2113cee95a42ea893aa6eddb01b14e563153fabb",
      "parents": [
        "0a619e58703b86d53d07e938eade9a91a4a863c6"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "jweiner@redhat.com",
        "time": "Wed Nov 02 13:38:23 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 02 16:07:00 2011 -0700"
      },
      "message": "memcg: skip scanning active lists based on individual size\n\nReclaim decides to skip scanning an active list when the corresponding\ninactive list is above a certain size in comparison to leave the assumed\nworking set alone while there are still enough reclaim candidates around.\n\nThe memcg implementation of comparing those lists instead reports whether\nthe whole memcg is low on the requested type of inactive pages,\nconsidering all nodes and zones.\n\nThis can lead to an oversized active list not being scanned because of the\nstate of the other lists in the memcg, as well as an active list being\nscanned while its corresponding inactive list has enough pages.\n\nNot only is this wrong, it\u0027s also a scalability hazard, because the global\nmemory state over all nodes and zones has to be gathered for each memcg\nand zone scanned.\n\nMake these calculations purely based on the size of the two LRU lists\nthat are actually affected by the outcome of the decision.\n\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: Ying Han \u003cyinghan@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e0c23279c9f800c403f37511484d9014ac83adec",
      "tree": "9dcf058d3d1c691328ea5839dfe9c340e47ee3fa",
      "parents": [
        "e0887c19b2daa140f20ca8104bdc5740f39dbb86"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Mon Oct 31 17:09:33 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:50 2011 -0700"
      },
      "message": "vmscan: abort reclaim/compaction if compaction can proceed\n\nIf compaction can proceed, shrink_zones() stops doing any work but its\ncallers still call shrink_slab() which raises the priority and potentially\nsleeps.  This is unnecessary and wasteful so this patch aborts direct\nreclaim/compaction entirely if compaction can proceed.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nCc: Josh Boyer \u003cjwboyer@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e0887c19b2daa140f20ca8104bdc5740f39dbb86",
      "tree": "86330414eb04b5989e68661c205aa52d46ca7ebf",
      "parents": [
        "21ee9f398be209ccbb62929d35961ca1ed48eec3"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Mon Oct 31 17:09:31 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:50 2011 -0700"
      },
      "message": "vmscan: limit direct reclaim for higher order allocations\n\nWhen suffering from memory fragmentation due to unfreeable pages, THP page\nfaults will repeatedly try to compact memory.  Due to the unfreeable\npages, compaction fails.\n\nNeedless to say, at that point page reclaim also fails to create free\ncontiguous 2MB areas.  However, that doesn\u0027t stop the current code from\ntrying, over and over again, and freeing a minimum of 4MB (2UL \u003c\u003c\nsc-\u003eorder pages) at every single invocation.\n\nThis resulted in my 12GB system having 2-3GB free memory, a corresponding\namount of used swap and very sluggish response times.\n\nThis can be avoided by having the direct reclaim code not reclaim from\nzones that already have plenty of free memory available for compaction.\n\nIf compaction still fails due to unmovable memory, doing additional\nreclaim will only hurt the system, not help.\n\n[jweiner@redhat.com: change comment to explain the order check]\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "21ee9f398be209ccbb62929d35961ca1ed48eec3",
      "tree": "4127e14f4a07a2cb7bc6eb902e9c7b0baab8e84f",
      "parents": [
        "2f1da6421570d064a94e17190a4955c2df99794d"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Mon Oct 31 17:09:28 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:50 2011 -0700"
      },
      "message": "vmscan: add barrier to prevent evictable page in unevictable list\n\nWhen a race between putback_lru_page() and shmem_lock with lock\u003d0 happens,\nprogrom execution order is as follows, but clear_bit in processor #1 could\nbe reordered right before spin_unlock of processor #1.  Then, the page\nwould be stranded on the unevictable list.\n\nspin_lock\nSetPageLRU\nspin_unlock\n                                clear_bit(AS_UNEVICTABLE)\n                                spin_lock\n                                if PageLRU()\n                                        if !test_bit(AS_UNEVICTABLE)\n                                        \tmove evictable list\nsmp_mb\nif !test_bit(AS_UNEVICTABLE)\n        move evictable list\n                                spin_unlock\n\nBut, pagevec_lookup() in scan_mapping_unevictable_pages() has\nrcu_read_[un]lock() so it could protect reordering before reaching\ntest_bit(AS_UNEVICTABLE) on processor #1 so this problem never happens.\nBut it\u0027s a unexpected side effect and we should solve this problem\nproperly.\n\nThis patch adds a barrier after mapping_clear_unevictable.\n\nI didn\u0027t meet this problem but just found during review.\n\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nAcked-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "264e56d8247ef6e31ed4386926cae86c61ddcb18",
      "tree": "87e85ee670fb7ae4c0cd7bdeae700faff021bf48",
      "parents": [
        "3f380998aeb51b99d5d22cadb41162e1e9db70d2"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "jweiner@redhat.com",
        "time": "Mon Oct 31 17:09:13 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:49 2011 -0700"
      },
      "message": "mm: disable user interface to manually rescue unevictable pages\n\nAt one point, anonymous pages were supposed to go on the unevictable list\nwhen no swap space was configured, and the idea was to manually rescue\nthose pages after adding swap and making them evictable again.  But\nnowadays, swap-backed pages on the anon LRU list are not scanned without\navailable swap space anyway, so there is no point in moving them to a\nseparate list anymore.\n\nThe manual rescue could also be used in case pages were stranded on the\nunevictable list due to race conditions.  But the code has been around for\na while now and newly discovered bugs should be properly reported and\ndealt with instead of relying on such a manual fixup.\n\nIn addition to the lack of a usecase, the sysfs interface to rescue pages\nfrom a specific NUMA node has been broken since its introduction, so it\u0027s\nunlikely that anybody ever relied on that.\n\nThis patch removes the functionality behind the sysctl and the\nnode-interface and emits a one-time warning when somebody tries to access\neither of them.\n\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nReported-by: Kautuk Consul \u003cconsul.kautuk@gmail.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3f380998aeb51b99d5d22cadb41162e1e9db70d2",
      "tree": "1d5bb20368b06c7b86e7257771209795bd764f00",
      "parents": [
        "4e9dc5df46001510ebd3b3e54faa650f474e51a3"
      ],
      "author": {
        "name": "Kautuk Consul",
        "email": "consul.kautuk@gmail.com",
        "time": "Mon Oct 31 17:09:11 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:49 2011 -0700"
      },
      "message": "vmscan.c: fix invalid strict_strtoul() check in write_scan_unevictable_node()\n\nwrite_scan_unevictable_node() checks the value req returned by\nstrict_strtoul() and returns 1 if req is 0.\n\nHowever, when strict_strtoul() returns 0, it means successful conversion\nof buf to unsigned long.\n\nDue to this, the function was not proceeding to scan the zones for\nunevictable pages even though we write a valid value to the\nscan_unevictable_pages sys file.\n\nChange this check slightly to check for invalid value in buf as well as 0\nvalue stored in res after successful conversion via strict_strtoul.  In\nboth cases, we do not perform the scanning of this node\u0027s zones.\n\nSigned-off-by: Kautuk Consul \u003cconsul.kautuk@gmail.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f0dfcde099453aa4c0dc42473828d15a6d492936",
      "tree": "50346f4e8d9a773f266194661edea903a855a110",
      "parents": [
        "d1f0ece6cdca973c01a46dff0eb062baafe78a85"
      ],
      "author": {
        "name": "Alex,Shi",
        "email": "alex.shi@intel.com",
        "time": "Mon Oct 31 17:08:45 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:48 2011 -0700"
      },
      "message": "kswapd: assign new_order and new_classzone_idx after wakeup in sleeping\n\nThere 2 places to read pgdat in kswapd.  One is return from a successful\nbalance, another is waked up from kswapd sleeping.  The new_order and\nnew_classzone_idx represent the balance input order and classzone_idx.\n\nBut current new_order and new_classzone_idx are not assigned after\nkswapd_try_to_sleep(), that will cause a bug in the following scenario.\n\n1: after a successful balance, kswapd goes to sleep, and new_order \u003d 0;\n   new_classzone_idx \u003d __MAX_NR_ZONES - 1;\n\n2: kswapd waked up with order \u003d 3 and classzone_idx \u003d ZONE_NORMAL\n\n3: in the balance_pgdat() running, a new balance wakeup happened with\n   order \u003d 5, and classzone_idx \u003d ZONE_NORMAL\n\n4: the first wakeup(order \u003d 3) finished successufly, return order \u003d 3\n   but, the new_order is still 0, so, this balancing will be treated as a\n   failed balance.  And then the second tighter balancing will be missed.\n\nSo, to avoid the above problem, the new_order and new_classzone_idx need\nto be assigned for later successful comparison.\n\nSigned-off-by: Alex Shi \u003calex.shi@intel.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nTested-by: Pádraig Brady \u003cP@draigBrady.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d2ebd0f6b89567eb93ead4e2ca0cbe03021f344b",
      "tree": "1f8fc3f7702a8b4d362f5537e135e96f86043f8d",
      "parents": [
        "64212ec569bfdd094f7a23d9b09862209a983559"
      ],
      "author": {
        "name": "Alex,Shi",
        "email": "alex.shi@intel.com",
        "time": "Mon Oct 31 17:08:39 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:48 2011 -0700"
      },
      "message": "kswapd: avoid unnecessary rebalance after an unsuccessful balancing\n\nIn commit 215ddd66 (\"mm: vmscan: only read new_classzone_idx from pgdat\nwhen reclaiming successfully\") , Mel Gorman said kswapd is better to sleep\nafter a unsuccessful balancing if there is tighter reclaim request pending\nin the balancing.  But in the following scenario, kswapd do something that\nis not matched our expectation.  The patch fixes this issue.\n\n1, Read pgdat request A (classzone_idx, order \u003d 3)\n2, balance_pgdat()\n3, During pgdat, a new pgdat request B (classzone_idx, order \u003d 5) is placed\n4, balance_pgdat() returns but failed since returned order \u003d 0\n5, pgdat of request A assigned to balance_pgdat(), and do balancing again.\n   While the expectation behavior of kswapd should try to sleep.\n\nSigned-off-by: Alex Shi \u003calex.shi@intel.com\u003e\nReviewed-by: Tim Chen \u003ctim.c.chen@linux.intel.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nTested-by: Pádraig Brady \u003cP@draigBrady.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "16fb951237c2b0b28037b992ee44e7ee401c30d1",
      "tree": "756ba52239d304d8f45deb102f17960f0a8517ec",
      "parents": [
        "49ea7eb65e7c5060807fb9312b1ad4c3eab82e2c"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Mon Oct 31 17:08:02 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:47 2011 -0700"
      },
      "message": "vmscan: count pages into balanced for zone with good watermark\n\nIt\u0027s possible a zone watermark is ok when entering the balance_pgdat()\nloop, while the zone is within the requested classzone_idx.  Count pages\nfrom this zone into `balanced\u0027.  In this way, we can skip shrinking zones\ntoo much for high order allocation.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "49ea7eb65e7c5060807fb9312b1ad4c3eab82e2c",
      "tree": "88eaa206cdcac1190817820a0eb56bca2585f9ea",
      "parents": [
        "92df3a723f84cdf8133560bbff950a7a99e92bc9"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Mon Oct 31 17:07:59 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:47 2011 -0700"
      },
      "message": "mm: vmscan: immediately reclaim end-of-LRU dirty pages when writeback completes\n\nWhen direct reclaim encounters a dirty page, it gets recycled around the\nLRU for another cycle.  This patch marks the page PageReclaim similar to\ndeactivate_page() so that the page gets reclaimed almost immediately after\nthe page gets cleaned.  This is to avoid reclaiming clean pages that are\nyounger than a dirty page encountered at the end of the LRU that might\nhave been something like a use-once page.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "92df3a723f84cdf8133560bbff950a7a99e92bc9",
      "tree": "503efc278236d877508da66ea7ec7cbb81203d64",
      "parents": [
        "f84f6e2b0868f198f97a32ba503d6f9f319a249a"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Mon Oct 31 17:07:56 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:46 2011 -0700"
      },
      "message": "mm: vmscan: throttle reclaim if encountering too many dirty pages under writeback\n\nWorkloads that are allocating frequently and writing files place a large\nnumber of dirty pages on the LRU.  With use-once logic, it is possible for\nthem to reach the end of the LRU quickly requiring the reclaimer to scan\nmore to find clean pages.  Ordinarily, processes that are dirtying memory\nwill get throttled by dirty balancing but this is a global heuristic and\ndoes not take into account that LRUs are maintained on a per-zone basis.\nThis can lead to a situation whereby reclaim is scanning heavily, skipping\nover a large number of pages under writeback and recycling them around the\nLRU consuming CPU.\n\nThis patch checks how many of the number of pages isolated from the LRU\nwere dirty and under writeback.  If a percentage of them under writeback,\nthe process will be throttled if a backing device or the zone is\ncongested.  Note that this applies whether it is anonymous or file-backed\npages that are under writeback meaning that swapping is potentially\nthrottled.  This is intentional due to the fact if the swap device is\ncongested, scanning more pages and dispatching more IO is not going to\nhelp matters.\n\nThe percentage that must be in writeback depends on the priority.  At\ndefault priority, all of them must be dirty.  At DEF_PRIORITY-1, 50% of\nthem must be, DEF_PRIORITY-2, 25% etc.  i.e.  as pressure increases the\ngreater the likelihood the process will get throttled to allow the flusher\nthreads to make some progress.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f84f6e2b0868f198f97a32ba503d6f9f319a249a",
      "tree": "2103afe0304afd0045dca4b92dfd35922cfc289b",
      "parents": [
        "966dbde2c208e07bab7a45a7855e1e693eabe661"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Mon Oct 31 17:07:51 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:46 2011 -0700"
      },
      "message": "mm: vmscan: do not writeback filesystem pages in kswapd except in high priority\n\nIt is preferable that no dirty pages are dispatched for cleaning from the\npage reclaim path.  At normal priorities, this patch prevents kswapd\nwriting pages.\n\nHowever, page reclaim does have a requirement that pages be freed in a\nparticular zone.  If it is failing to make sufficient progress (reclaiming\n\u003c SWAP_CLUSTER_MAX at any priority priority), the priority is raised to\nscan more pages.  A priority of DEF_PRIORITY - 3 is considered to be the\npoint where kswapd is getting into trouble reclaiming pages.  If this\npriority is reached, kswapd will dispatch pages for writing.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a18bba061c789f5815c3efc3c80e6ac269911964",
      "tree": "bec0234fb338f8e06b6e39df2cfa09acf2a968a3",
      "parents": [
        "ee72886d8ed5d9de3fa0ed3b99a7ca7702576a96"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Mon Oct 31 17:07:42 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:46 2011 -0700"
      },
      "message": "mm: vmscan: remove dead code related to lumpy reclaim waiting on pages under writeback\n\nLumpy reclaim worked with two passes - the first which queued pages for IO\nand the second which waited on writeback.  As direct reclaim can no longer\nwrite pages there is some dead code.  This patch removes it but direct\nreclaim will continue to wait on pages under writeback while in\nsynchronous reclaim mode.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ee72886d8ed5d9de3fa0ed3b99a7ca7702576a96",
      "tree": "d9596005d3ea38541c5dfe1c2a0b7d5a4d73488f",
      "parents": [
        "e10d59f2c3decaf22cc5d3de7040eba202bc2df3"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Oct 31 17:07:38 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:46 2011 -0700"
      },
      "message": "mm: vmscan: do not writeback filesystem pages in direct reclaim\n\nTesting from the XFS folk revealed that there is still too much I/O from\nthe end of the LRU in kswapd.  Previously it was considered acceptable by\nVM people for a small number of pages to be written back from reclaim with\ntesting generally showing about 0.3% of pages reclaimed were written back\n(higher if memory was low).  That writing back a small number of pages is\nok has been heavily disputed for quite some time and Dave Chinner\nexplained it well;\n\n\tIt doesn\u0027t have to be a very high number to be a problem. IO\n\tis orders of magnitude slower than the CPU time it takes to\n\tflush a page, so the cost of making a bad flush decision is\n\tvery high. And single page writeback from the LRU is almost\n\talways a bad flush decision.\n\nTo complicate matters, filesystems respond very differently to requests\nfrom reclaim according to Christoph Hellwig;\n\n\txfs tries to write it back if the requester is kswapd\n\text4 ignores the request if it\u0027s a delayed allocation\n\tbtrfs ignores the request\n\nAs a result, each filesystem has different performance characteristics\nwhen under memory pressure and there are many pages being dirtied.  In\nsome cases, the request is ignored entirely so the VM cannot depend on the\nIO being dispatched.\n\nThe objective of this series is to reduce writing of filesystem-backed\npages from reclaim, play nicely with writeback that is already in progress\nand throttle reclaim appropriately when writeback pages are encountered.\nThe assumption is that the flushers will always write pages faster than if\nreclaim issues the IO.\n\nA secondary goal is to avoid the problem whereby direct reclaim splices\ntwo potentially deep call stacks together.\n\nThere is a potential new problem as reclaim has less control over how long\nbefore a page in a particularly zone or container is cleaned and direct\nreclaimers depend on kswapd or flusher threads to do the necessary work.\nHowever, as filesystems sometimes ignore direct reclaim requests already,\nit is not expected to be a serious issue.\n\nPatch 1 disables writeback of filesystem pages from direct reclaim\n\tentirely. Anonymous pages are still written.\n\nPatch 2 removes dead code in lumpy reclaim as it is no longer able\n\tto synchronously write pages. This hurts lumpy reclaim but\n\tthere is an expectation that compaction is used for hugepage\n\tallocations these days and lumpy reclaim\u0027s days are numbered.\n\nPatches 3-4 add warnings to XFS and ext4 if called from\n\tdirect reclaim. With patch 1, this \"never happens\" and is\n\tintended to catch regressions in this logic in the future.\n\nPatch 5 disables writeback of filesystem pages from kswapd unless\n\tthe priority is raised to the point where kswapd is considered\n\tto be in trouble.\n\nPatch 6 throttles reclaimers if too many dirty pages are being\n\tencountered and the zones or backing devices are congested.\n\nPatch 7 invalidates dirty pages found at the end of the LRU so they\n\tare reclaimed quickly after being written back rather than\n\twaiting for a reclaimer to find them\n\nI consider this series to be orthogonal to the writeback work but it is\nworth noting that the writeback work affects the viability of patch 8 in\nparticular.\n\nI tested this on ext4 and xfs using fs_mark, a simple writeback test based\non dd and a micro benchmark that does a streaming write to a large mapping\n(exercises use-once LRU logic) followed by streaming writes to a mix of\nanonymous and file-backed mappings.  The command line for fs_mark when\nbotted with 512M looked something like\n\n./fs_mark -d  /tmp/fsmark-2676  -D  100  -N  150  -n  150  -L  25  -t  1  -S0  -s  10485760\n\nThe number of files was adjusted depending on the amount of available\nmemory so that the files created was about 3xRAM.  For multiple threads,\nthe -d switch is specified multiple times.\n\nThe test machine is x86-64 with an older generation of AMD processor with\n4 cores.  The underlying storage was 4 disks configured as RAID-0 as this\nwas the best configuration of storage I had available.  Swap is on a\nseparate disk.  Dirty ratio was tuned to 40% instead of the default of\n20%.\n\nTesting was run with and without monitors to both verify that the patches\nwere operating as expected and that any performance gain was real and not\ndue to interference from monitors.\n\nHere is a summary of results based on testing XFS.\n\n512M1P-xfs           Files/s  mean                 32.69 ( 0.00%)     34.44 ( 5.08%)\n512M1P-xfs           Elapsed Time fsmark                    51.41     48.29\n512M1P-xfs           Elapsed Time simple-wb                114.09    108.61\n512M1P-xfs           Elapsed Time mmap-strm                113.46    109.34\n512M1P-xfs           Kswapd efficiency fsmark                 62%       63%\n512M1P-xfs           Kswapd efficiency simple-wb              56%       61%\n512M1P-xfs           Kswapd efficiency mmap-strm              44%       42%\n512M-xfs             Files/s  mean                 30.78 ( 0.00%)     35.94 (14.36%)\n512M-xfs             Elapsed Time fsmark                    56.08     48.90\n512M-xfs             Elapsed Time simple-wb                112.22     98.13\n512M-xfs             Elapsed Time mmap-strm                219.15    196.67\n512M-xfs             Kswapd efficiency fsmark                 54%       56%\n512M-xfs             Kswapd efficiency simple-wb              54%       55%\n512M-xfs             Kswapd efficiency mmap-strm              45%       44%\n512M-4X-xfs          Files/s  mean                 30.31 ( 0.00%)     33.33 ( 9.06%)\n512M-4X-xfs          Elapsed Time fsmark                    63.26     55.88\n512M-4X-xfs          Elapsed Time simple-wb                100.90     90.25\n512M-4X-xfs          Elapsed Time mmap-strm                261.73    255.38\n512M-4X-xfs          Kswapd efficiency fsmark                 49%       50%\n512M-4X-xfs          Kswapd efficiency simple-wb              54%       56%\n512M-4X-xfs          Kswapd efficiency mmap-strm              37%       36%\n512M-16X-xfs         Files/s  mean                 60.89 ( 0.00%)     65.22 ( 6.64%)\n512M-16X-xfs         Elapsed Time fsmark                    67.47     58.25\n512M-16X-xfs         Elapsed Time simple-wb                103.22     90.89\n512M-16X-xfs         Elapsed Time mmap-strm                237.09    198.82\n512M-16X-xfs         Kswapd efficiency fsmark                 45%       46%\n512M-16X-xfs         Kswapd efficiency simple-wb              53%       55%\n512M-16X-xfs         Kswapd efficiency mmap-strm              33%       33%\n\nUp until 512-4X, the FSmark improvements were statistically significant.\nFor the 4X and 16X tests the results were within standard deviations but\njust barely.  The time to completion for all tests is improved which is an\nimportant result.  In general, kswapd efficiency is not affected by\nskipping dirty pages.\n\n1024M1P-xfs          Files/s  mean                 39.09 ( 0.00%)     41.15 ( 5.01%)\n1024M1P-xfs          Elapsed Time fsmark                    84.14     80.41\n1024M1P-xfs          Elapsed Time simple-wb                210.77    184.78\n1024M1P-xfs          Elapsed Time mmap-strm                162.00    160.34\n1024M1P-xfs          Kswapd efficiency fsmark                 69%       75%\n1024M1P-xfs          Kswapd efficiency simple-wb              71%       77%\n1024M1P-xfs          Kswapd efficiency mmap-strm              43%       44%\n1024M-xfs            Files/s  mean                 35.45 ( 0.00%)     37.00 ( 4.19%)\n1024M-xfs            Elapsed Time fsmark                    94.59     91.00\n1024M-xfs            Elapsed Time simple-wb                229.84    195.08\n1024M-xfs            Elapsed Time mmap-strm                405.38    440.29\n1024M-xfs            Kswapd efficiency fsmark                 79%       71%\n1024M-xfs            Kswapd efficiency simple-wb              74%       74%\n1024M-xfs            Kswapd efficiency mmap-strm              39%       42%\n1024M-4X-xfs         Files/s  mean                 32.63 ( 0.00%)     35.05 ( 6.90%)\n1024M-4X-xfs         Elapsed Time fsmark                   103.33     97.74\n1024M-4X-xfs         Elapsed Time simple-wb                204.48    178.57\n1024M-4X-xfs         Elapsed Time mmap-strm                528.38    511.88\n1024M-4X-xfs         Kswapd efficiency fsmark                 81%       70%\n1024M-4X-xfs         Kswapd efficiency simple-wb              73%       72%\n1024M-4X-xfs         Kswapd efficiency mmap-strm              39%       38%\n1024M-16X-xfs        Files/s  mean                 42.65 ( 0.00%)     42.97 ( 0.74%)\n1024M-16X-xfs        Elapsed Time fsmark                   103.11     99.11\n1024M-16X-xfs        Elapsed Time simple-wb                200.83    178.24\n1024M-16X-xfs        Elapsed Time mmap-strm                397.35    459.82\n1024M-16X-xfs        Kswapd efficiency fsmark                 84%       69%\n1024M-16X-xfs        Kswapd efficiency simple-wb              74%       73%\n1024M-16X-xfs        Kswapd efficiency mmap-strm              39%       40%\n\nAll FSMark tests up to 16X had statistically significant improvements.\nFor the most part, tests are completing faster with the exception of the\nstreaming writes to a mixture of anonymous and file-backed mappings which\nwere slower in two cases\n\nIn the cases where the mmap-strm tests were slower, there was more\nswapping due to dirty pages being skipped.  The number of additional pages\nswapped is almost identical to the fewer number of pages written from\nreclaim.  In other words, roughly the same number of pages were reclaimed\nbut swapping was slower.  As the test is a bit unrealistic and stresses\nmemory heavily, the small shift is acceptable.\n\n4608M1P-xfs          Files/s  mean                 29.75 ( 0.00%)     30.96 ( 3.91%)\n4608M1P-xfs          Elapsed Time fsmark                   512.01    492.15\n4608M1P-xfs          Elapsed Time simple-wb                618.18    566.24\n4608M1P-xfs          Elapsed Time mmap-strm                488.05    465.07\n4608M1P-xfs          Kswapd efficiency fsmark                 93%       86%\n4608M1P-xfs          Kswapd efficiency simple-wb              88%       84%\n4608M1P-xfs          Kswapd efficiency mmap-strm              46%       45%\n4608M-xfs            Files/s  mean                 27.60 ( 0.00%)     28.85 ( 4.33%)\n4608M-xfs            Elapsed Time fsmark                   555.96    532.34\n4608M-xfs            Elapsed Time simple-wb                659.72    571.85\n4608M-xfs            Elapsed Time mmap-strm               1082.57   1146.38\n4608M-xfs            Kswapd efficiency fsmark                 89%       91%\n4608M-xfs            Kswapd efficiency simple-wb              88%       82%\n4608M-xfs            Kswapd efficiency mmap-strm              48%       46%\n4608M-4X-xfs         Files/s  mean                 26.00 ( 0.00%)     27.47 ( 5.35%)\n4608M-4X-xfs         Elapsed Time fsmark                   592.91    564.00\n4608M-4X-xfs         Elapsed Time simple-wb                616.65    575.07\n4608M-4X-xfs         Elapsed Time mmap-strm               1773.02   1631.53\n4608M-4X-xfs         Kswapd efficiency fsmark                 90%       94%\n4608M-4X-xfs         Kswapd efficiency simple-wb              87%       82%\n4608M-4X-xfs         Kswapd efficiency mmap-strm              43%       43%\n4608M-16X-xfs        Files/s  mean                 26.07 ( 0.00%)     26.42 ( 1.32%)\n4608M-16X-xfs        Elapsed Time fsmark                   602.69    585.78\n4608M-16X-xfs        Elapsed Time simple-wb                606.60    573.81\n4608M-16X-xfs        Elapsed Time mmap-strm               1549.75   1441.86\n4608M-16X-xfs        Kswapd efficiency fsmark                 98%       98%\n4608M-16X-xfs        Kswapd efficiency simple-wb              88%       82%\n4608M-16X-xfs        Kswapd efficiency mmap-strm              44%       42%\n\nUnlike the other tests, the fsmark results are not statistically\nsignificant but the min and max times are both improved and for the most\npart, tests completed faster.\n\nThere are other indications that this is an improvement as well.  For\nexample, in the vast majority of cases, there were fewer pages scanned by\ndirect reclaim implying in many cases that stalls due to direct reclaim\nare reduced.  KSwapd is scanning more due to skipping dirty pages which is\nunfortunate but the CPU usage is still acceptable\n\nIn an earlier set of tests, I used blktrace and in almost all cases\nthroughput throughout the entire test was higher.  However, I ended up\ndiscarding those results as recording blktrace data was too heavy for my\nliking.\n\nOn a laptop, I plugged in a USB stick and ran a similar tests of tests\nusing it as backing storage.  A desktop environment was running and for\nthe entire duration of the tests, firefox and gnome terminal were\nlaunching and exiting to vaguely simulate a user.\n\n1024M-xfs            Files/s  mean               0.41 ( 0.00%)        0.44 ( 6.82%)\n1024M-xfs            Elapsed Time fsmark               2053.52   1641.03\n1024M-xfs            Elapsed Time simple-wb            1229.53    768.05\n1024M-xfs            Elapsed Time mmap-strm            4126.44   4597.03\n1024M-xfs            Kswapd efficiency fsmark              84%       85%\n1024M-xfs            Kswapd efficiency simple-wb           92%       81%\n1024M-xfs            Kswapd efficiency mmap-strm           60%       51%\n1024M-xfs            Avg wait ms fsmark                5404.53     4473.87\n1024M-xfs            Avg wait ms simple-wb             2541.35     1453.54\n1024M-xfs            Avg wait ms mmap-strm             3400.25     3852.53\n\nThe mmap-strm results were hurt because firefox launching had a tendency\nto push the test out of memory.  On the postive side, firefox launched\nmarginally faster with the patches applied.  Time to completion for many\ntests was faster but more importantly - the \"Avg wait\" time as measured by\niostat was far lower implying the system would be more responsive.  It was\nalso the case that \"Avg wait ms\" on the root filesystem was lower.  I\ntested it manually and while the system felt slightly more responsive\nwhile copying data to a USB stick, it was marginal enough that it could be\nmy imagination.\n\nThis patch: do not writeback filesystem pages in direct reclaim.\n\nWhen kswapd is failing to keep zones above the min watermark, a process\nwill enter direct reclaim in the same manner kswapd does.  If a dirty page\nis encountered during the scan, this page is written to backing storage\nusing mapping-\u003ewritepage.\n\nThis causes two problems.  First, it can result in very deep call stacks,\nparticularly if the target storage or filesystem are complex.  Some\nfilesystems ignore write requests from direct reclaim as a result.  The\nsecond is that a single-page flush is inefficient in terms of IO.  While\nthere is an expectation that the elevator will merge requests, this does\nnot always happen.  Quoting Christoph Hellwig;\n\n\tThe elevator has a relatively small window it can operate on,\n\tand can never fix up a bad large scale writeback pattern.\n\nThis patch prevents direct reclaim writing back filesystem pages by\nchecking if current is kswapd.  Anonymous pages are still written to swap\nas there is not the equivalent of a flusher thread for anonymous pages.\nIf the dirty pages cannot be written back, they are placed back on the LRU\nlists.  There is now a direct dependency on dirty page balancing to\nprevent too many pages in the system being dirtied which would prevent\nreclaim making forward progress.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f11c0ca501af89fc07b0d9f17531ba3b68a4ef39",
      "tree": "c66a24b4ca2778b940c01a2af78eca6abc0b3421",
      "parents": [
        "4f31888c104687078f8d88c2f11eca1080c88464"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "jweiner@redhat.com",
        "time": "Mon Oct 31 17:07:27 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:46 2011 -0700"
      },
      "message": "mm: vmscan: drop nr_force_scan[] from get_scan_count\n\nThe nr_force_scan[] tuple holds the effective scan numbers for anon and\nfile pages in case the situation called for a forced scan and the\nregularly calculated scan numbers turned out zero.\n\nHowever, the effective scan number can always be assumed to be\nSWAP_CLUSTER_MAX right before the division into anon and file.  The\nnumerators and denominator are properly set up for all cases, be it force\nscan for just file, just anon, or both, to do the right thing.\n\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3da367c3e5fca71d4e778fa565d9b098d5518f4a",
      "tree": "915dff1989bdffaed157b56f724631b5d8f2d328",
      "parents": [
        "3fa36acbced23c563345de3179dfe1775f15be5e"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Mon Oct 31 17:07:03 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:45 2011 -0700"
      },
      "message": "vmscan: add block plug for page reclaim\n\nper-task block plug can reduce block queue lock contention and increase\nrequest merge.  Currently page reclaim doesn\u0027t support it.  I originally\nthought page reclaim doesn\u0027t need it, because kswapd thread count is\nlimited and file cache write is done at flusher mostly.\n\nWhen I test a workload with heavy swap in a 4-node machine, each CPU is\ndoing direct page reclaim and swap.  This causes block queue lock\ncontention.  In my test, without below patch, the CPU utilization is about\n2% ~ 7%.  With the patch, the CPU utilization is about 1% ~ 3%.  Disk\nthroughput isn\u0027t changed.  This should improve normal kswapd write and\nfile cache write too (increase request merge for example), but might not\nbe so obvious as I explain above.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f80c0673610e36ae29d63e3297175e22f70dde5f",
      "tree": "0a6aab3b637fa75961224e9261eb544156672c34",
      "parents": [
        "39deaf8585152f1a35c1676d3d7dc6ae0fb65967"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Mon Oct 31 17:06:55 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:44 2011 -0700"
      },
      "message": "mm: zone_reclaim: make isolate_lru_page() filter-aware\n\nIn __zone_reclaim case, we don\u0027t want to shrink mapped page.  Nonetheless,\nwe have isolated mapped page and re-add it into LRU\u0027s head.  It\u0027s\nunnecessary CPU overhead and makes LRU churning.\n\nOf course, when we isolate the page, the page might be mapped but when we\ntry to migrate the page, the page would be not mapped.  So it could be\nmigrated.  But race is rare and although it happens, it\u0027s no big deal.\n\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "39deaf8585152f1a35c1676d3d7dc6ae0fb65967",
      "tree": "a7509ea61c2f1028ed7ef961aa1abd16d50905f9",
      "parents": [
        "4356f21d09283dc6d39a6f7287a65ddab61e2808"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Mon Oct 31 17:06:51 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:44 2011 -0700"
      },
      "message": "mm: compaction: make isolate_lru_page() filter-aware\n\nIn async mode, compaction doesn\u0027t migrate dirty or writeback pages.  So,\nit\u0027s meaningless to pick the page and re-add it to lru list.\n\nOf course, when we isolate the page in compaction, the page might be dirty\nor writeback but when we try to migrate the page, the page would be not\ndirty, writeback.  So it could be migrated.  But it\u0027s very unlikely as\nisolate and migration cycle is much faster than writeout.\n\nSo, this patch helps cpu overhead and prevent unnecessary LRU churning.\n\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4356f21d09283dc6d39a6f7287a65ddab61e2808",
      "tree": "34822a1662ea83291455834556a4fb5bf98ecd72",
      "parents": [
        "b9e84ac1536d35aee03b2601f19694949f0bd506"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Mon Oct 31 17:06:47 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:44 2011 -0700"
      },
      "message": "mm: change isolate mode from #define to bitwise type\n\nChange ISOLATE_XXX macro with bitwise isolate_mode_t type.  Normally,\nmacro isn\u0027t recommended as it\u0027s type-unsafe and making debugging harder as\nsymbol cannot be passed throught to the debugger.\n\nQuote from Johannes\n\" Hmm, it would probably be cleaner to fully convert the isolation mode\ninto independent flags.  INACTIVE, ACTIVE, BOTH is currently a\ntri-state among flags, which is a bit ugly.\"\n\nThis patch moves isolate mode from swap.h to mmzone.h by memcontrol.h\n\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0e175a1835ffc979e55787774e58ec79e41957d7",
      "tree": "6ec4b65a8de4e9d1c12d26a1079079ed81d79450",
      "parents": [
        "ad4e38dd6a33bb3a4882c487d7abe621e583b982"
      ],
      "author": {
        "name": "Curt Wohlgemuth",
        "email": "curtw@google.com",
        "time": "Fri Oct 07 21:54:10 2011 -0600"
      },
      "committer": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Mon Oct 31 00:33:36 2011 +0800"
      },
      "message": "writeback: Add a \u0027reason\u0027 to wb_writeback_work\n\nThis creates a new \u0027reason\u0027 field in a wb_writeback_work\nstructure, which unambiguously identifies who initiates\nwriteback activity.  A \u0027wb_reason\u0027 enumeration has been\nadded to writeback.h, to enumerate the possible reasons.\n\nThe \u0027writeback_work_class\u0027 and tracepoint event class and\n\u0027writeback_queue_io\u0027 tracepoints are updated to include the\nsymbolic \u0027reason\u0027 in all trace events.\n\nAnd the \u0027writeback_inodes_sbXXX\u0027 family of routines has had\na wb_stats parameter added to them, so callers can specify\nwhy writeback is being started.\n\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Curt Wohlgemuth \u003ccurtw@google.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "e060c38434b2caa78efe7cedaff4191040b65a15",
      "tree": "407361230bf6733f63d8e788e4b5e6566ee04818",
      "parents": [
        "10e4ac572eeffe5317019bd7330b6058a400dfc2",
        "cc39c6a9bbdebfcf1a7dee64d83bf302bc38d941"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Thu Sep 15 15:08:05 2011 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Thu Sep 15 15:08:18 2011 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into for-next\n\nFast-forward merge with Linus to be able to merge patches\nbased on more recent version of the tree.\n"
    },
    {
      "commit": "185efc0f9a1f2d6ad6d4782c5d9e529f3290567f",
      "tree": "9330dac6b7f17fad7d99e444b3544210109e2d99",
      "parents": [
        "a4d3e9e76337059406fcf3ead288c0df22a790e9"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "jweiner@redhat.com",
        "time": "Wed Sep 14 16:21:58 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 14 18:09:38 2011 -0700"
      },
      "message": "memcg: Revert \"memcg: add memory.vmscan_stat\"\n\nRevert the post-3.0 commit 82f9d486e59f5 (\"memcg: add\nmemory.vmscan_stat\").\n\nThe implementation of per-memcg reclaim statistics violates how memcg\nhierarchies usually behave: hierarchically.\n\nThe reclaim statistics are accounted to child memcgs and the parent\nhitting the limit, but not to hierarchy levels in between.  Usually,\nhierarchical statistics are perfectly recursive, with each level\nrepresenting the sum of itself and all its children.\n\nSince this exports statistics to userspace, this may lead to confusion\nand problems with changing things after the release, so revert it now,\nwe can try again later.\n\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a4d3e9e76337059406fcf3ead288c0df22a790e9",
      "tree": "a0213478caaa3845bf62a4cbe6b65979be5e34b4",
      "parents": [
        "d4c32f355cec2647efb65e4b24e630bd2386f787"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "jweiner@redhat.com",
        "time": "Wed Sep 14 16:21:52 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 14 18:09:37 2011 -0700"
      },
      "message": "mm: vmscan: fix force-scanning small targets without swap\n\nWithout swap, anonymous pages are not scanned.  As such, they should not\ncount when considering force-scanning a small target if there is no swap.\n\nOtherwise, targets are not force-scanned even when their effective scan\nnumber is zero and the other conditions--kswapd/memcg--apply.\n\nThis fixes 246e87a93934 (\"memcg: fix get_scan_count() for small\ntargets\").\n\n[akpm@linux-foundation.org: fix comment]\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "439423f6894aa0dec22187526827456f5004baed",
      "tree": "1f22238a24b83e0beb1467a1f73b0db952c69894",
      "parents": [
        "4c30c6f566c0989ddaee3407da44751e340a63ed"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Thu Aug 25 15:59:12 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 25 16:25:34 2011 -0700"
      },
      "message": "vmscan: clear ZONE_CONGESTED for zone with good watermark\n\nZONE_CONGESTED is only cleared in kswapd, but pages can be freed in any\ntask.  It\u0027s possible ZONE_CONGESTED isn\u0027t cleared in some cases:\n\n 1. the zone is already balanced just entering balance_pgdat() for\n    order-0 because concurrent tasks free memory.  In this case, later\n    check will skip the zone as it\u0027s balanced so the flag isn\u0027t cleared.\n\n 2. high order balance fallbacks to order-0.  quote from Mel: At the\n    end of balance_pgdat(), kswapd uses the following logic;\n\n\tIf reclaiming at high order {\n\t\tfor each zone {\n\t\t\tif all_unreclaimable\n\t\t\t\tskip\n\t\t\tif watermark is not met\n\t\t\t\torder \u003d 0\n\t\t\t\tloop again\n\n\t\t\t/* watermark is met */\n\t\t\tclear congested\n\t\t}\n\t}\n\n    i.e. it clears ZONE_CONGESTED if it the zone is balanced.  if not,\n    it restarts balancing at order-0.  However, if the higher zones are\n    balanced for order-0, kswapd will miss clearing ZONE_CONGESTED as\n    that only happens after a zone is shrunk.  This can mean that\n    wait_iff_congested() stalls unnecessarily.\n\nThis patch makes kswapd clear ZONE_CONGESTED during its initial\nhighmem-\u003edma scan for zones that are already balanced.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f51bdd2e97098a5cbb3cba7c3a56fa0e9ac3c444",
      "tree": "90419a74be50f313f7fefe99aa7776f8ba832233",
      "parents": [
        "7e8aa048989bf7e0604996a3e2068fb1a81f81bd"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Thu Aug 25 15:59:10 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 25 16:25:34 2011 -0700"
      },
      "message": "mm: fix a vmscan warning\n\nI get the below warning:\n\n  BUG: using smp_processor_id() in preemptible [00000000] code: bash/746\n  caller is native_sched_clock+0x37/0x6e\n  Pid: 746, comm: bash Tainted: G        W   3.0.0+ #254\n  Call Trace:\n   [\u003cffffffff813435c6\u003e] debug_smp_processor_id+0xc2/0xdc\n   [\u003cffffffff8104158d\u003e] native_sched_clock+0x37/0x6e\n   [\u003cffffffff81116219\u003e] try_to_free_mem_cgroup_pages+0x7d/0x270\n   [\u003cffffffff8114f1f8\u003e] mem_cgroup_force_empty+0x24b/0x27a\n   [\u003cffffffff8114ff21\u003e] ? sys_close+0x38/0x138\n   [\u003cffffffff8114ff21\u003e] ? sys_close+0x38/0x138\n   [\u003cffffffff8114f257\u003e] mem_cgroup_force_empty_write+0x17/0x19\n   [\u003cffffffff810c72fb\u003e] cgroup_file_write+0xa8/0xba\n   [\u003cffffffff811522d2\u003e] vfs_write+0xb3/0x138\n   [\u003cffffffff8115241a\u003e] sys_write+0x4a/0x71\n   [\u003cffffffff8114ffd9\u003e] ? sys_close+0xf0/0x138\n   [\u003cffffffff8176deab\u003e] system_call_fastpath+0x16/0x1b\n\nsched_clock() can\u0027t be used with preempt enabled.  And we don\u0027t need\nfast approach to get clock here, so let\u0027s use ktime API.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nTested-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "81d66c70b546e7be5d7e1f1ca9676fd17c5973af",
      "tree": "73b65ca359b47c7952c99df9abebe5922c69ca5c",
      "parents": [
        "52288b6646ee4b1f3b97b5b64e4e84652c2a9bbe"
      ],
      "author": {
        "name": "Justin P. Mattock",
        "email": "justinmattock@gmail.com",
        "time": "Tue Aug 23 09:28:02 2011 -0700"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Aug 24 16:45:10 2011 +0200"
      },
      "message": "mm/vmscan.c: fix a typo in a comment \"relaimed\" to \"reclaimed\"\n\nSigned-off-by: Justin P. Mattock \u003cjustinmattock@gmail.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "82f9d486e59f588c7d100865c36510644abda356",
      "tree": "266f3dcf4f57538196bddd77a129adfb2752335b",
      "parents": [
        "108b6a78463bb8c7163e4f9779f36ad8bbade334"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Jul 26 16:08:26 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 16:49:42 2011 -0700"
      },
      "message": "memcg: add memory.vmscan_stat\n\nThe commit log of 0ae5e89c60c9 (\"memcg: count the soft_limit reclaim\nin...\") says it adds scanning stats to memory.stat file.  But it doesn\u0027t\nbecause we considered we needed to make a concensus for such new APIs.\n\nThis patch is a trial to add memory.scan_stat. This shows\n  - the number of scanned pages(total, anon, file)\n  - the number of rotated pages(total, anon, file)\n  - the number of freed pages(total, anon, file)\n  - the number of elaplsed time (including sleep/pause time)\n\n  for both of direct/soft reclaim.\n\nThe biggest difference with oringinal Ying\u0027s one is that this file\ncan be reset by some write, as\n\n  # echo 0 ...../memory.scan_stat\n\nExample of output is here. This is a result after make -j 6 kernel\nunder 300M limit.\n\n  [kamezawa@bluextal ~]$ cat /cgroup/memory/A/memory.scan_stat\n  [kamezawa@bluextal ~]$ cat /cgroup/memory/A/memory.vmscan_stat\n  scanned_pages_by_limit 9471864\n  scanned_anon_pages_by_limit 6640629\n  scanned_file_pages_by_limit 2831235\n  rotated_pages_by_limit 4243974\n  rotated_anon_pages_by_limit 3971968\n  rotated_file_pages_by_limit 272006\n  freed_pages_by_limit 2318492\n  freed_anon_pages_by_limit 962052\n  freed_file_pages_by_limit 1356440\n  elapsed_ns_by_limit 351386416101\n  scanned_pages_by_system 0\n  scanned_anon_pages_by_system 0\n  scanned_file_pages_by_system 0\n  rotated_pages_by_system 0\n  rotated_anon_pages_by_system 0\n  rotated_file_pages_by_system 0\n  freed_pages_by_system 0\n  freed_anon_pages_by_system 0\n  freed_file_pages_by_system 0\n  elapsed_ns_by_system 0\n  scanned_pages_by_limit_under_hierarchy 9471864\n  scanned_anon_pages_by_limit_under_hierarchy 6640629\n  scanned_file_pages_by_limit_under_hierarchy 2831235\n  rotated_pages_by_limit_under_hierarchy 4243974\n  rotated_anon_pages_by_limit_under_hierarchy 3971968\n  rotated_file_pages_by_limit_under_hierarchy 272006\n  freed_pages_by_limit_under_hierarchy 2318492\n  freed_anon_pages_by_limit_under_hierarchy 962052\n  freed_file_pages_by_limit_under_hierarchy 1356440\n  elapsed_ns_by_limit_under_hierarchy 351386416101\n  scanned_pages_by_system_under_hierarchy 0\n  scanned_anon_pages_by_system_under_hierarchy 0\n  scanned_file_pages_by_system_under_hierarchy 0\n  rotated_pages_by_system_under_hierarchy 0\n  rotated_anon_pages_by_system_under_hierarchy 0\n  rotated_file_pages_by_system_under_hierarchy 0\n  freed_pages_by_system_under_hierarchy 0\n  freed_anon_pages_by_system_under_hierarchy 0\n  freed_file_pages_by_system_under_hierarchy 0\n  elapsed_ns_by_system_under_hierarchy 0\n\ntotal_xxxx is for hierarchy management.\n\nThis will be useful for further memcg developments and need to be\ndevelopped before we do some complicated rework on LRU/softlimit\nmanagement.\n\nThis patch adds a new struct memcg_scanrecord into scan_control struct.\nsc-\u003enr_scanned at el is not designed for exporting information.  For\nexample, nr_scanned is reset frequentrly and incremented +2 at scanning\nmapped pages.\n\nTo avoid complexity, I added a new param in scan_control which is for\nexporting scanning score.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Andrew Bresticker \u003cabrestic@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "4508378b9523e22a2a0175d8bf64d932fb10a67d"
}
