1. 14 12月, 2014 4 次提交
    • J
      mm: vmscan: invoke slab shrinkers from shrink_zone() · 6b4f7799
      Johannes Weiner 提交于
      The slab shrinkers are currently invoked from the zonelist walkers in
      kswapd, direct reclaim, and zone reclaim, all of which roughly gauge the
      eligible LRU pages and assemble a nodemask to pass to NUMA-aware
      shrinkers, which then again have to walk over the nodemask.  This is
      redundant code, extra runtime work, and fairly inaccurate when it comes to
      the estimation of actually scannable LRU pages.  The code duplication will
      only get worse when making the shrinkers cgroup-aware and requiring them
      to have out-of-band cgroup hierarchy walks as well.
      
      Instead, invoke the shrinkers from shrink_zone(), which is where all
      reclaimers end up, to avoid this duplication.
      
      Take the count for eligible LRU pages out of get_scan_count(), which
      considers many more factors than just the availability of swap space, like
      zone_reclaimable_pages() currently does.  Accumulate the number over all
      visited lruvecs to get the per-zone value.
      
      Some nodes have multiple zones due to memory addressing restrictions.  To
      avoid putting too much pressure on the shrinkers, only invoke them once
      for each such node, using the class zone of the allocation as the pivot
      zone.
      
      For now, this integrates the slab shrinking better into the reclaim logic
      and gets rid of duplicative invocations from kswapd, direct reclaim, and
      zone reclaim.  It also prepares for cgroup-awareness, allowing
      memcg-capable shrinkers to be added at the lruvec level without much
      duplication of both code and runtime work.
      
      This changes kswapd behavior, which used to invoke the shrinkers for each
      zone, but with scan ratios gathered from the entire node, resulting in
      meaningless pressure quantities on multi-zone nodes.
      
      Zone reclaim behavior also changes.  It used to shrink slabs until the
      same amount of pages were shrunk as were reclaimed from the LRUs.  Now it
      merely invokes the shrinkers once with the zone's scan ratio, which makes
      the shrinkers go easier on caches that implement aging and would prefer
      feeding back pressure from recently used slab objects to unused LRU pages.
      
      [vdavydov@parallels.com: assure class zone is populated]
      Signed-off-by: NJohannes Weiner <hannes@cmpxchg.org>
      Cc: Dave Chinner <david@fromorbit.com>
      Signed-off-by: NVladimir Davydov <vdavydov@parallels.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      6b4f7799
    • Z
      memory-hotplug: remove redundant call of page_to_pfn · 71fbd556
      Zhang Zhen 提交于
      This is just a small optimization.  The start_pfn can be obtained directly
      by phys_index << PFN_SECTION_SHIFT.  So the call of page_to_pfn() is
      redundant and remove it.
      Signed-off-by: NZhang Zhen <zhenzhang.zhang@huawei.com>
      Acked-by: NYasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
      Acked-by: NDavid Rientjes <rientjes@google.com>
      Cc: Dave Hansen <dave@sr71.net>
      Cc: Wang Nan <wangnan0@huawei.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      71fbd556
    • J
      iommu/amd: use handle_mm_fault directly · 9dc00f4c
      Jesse Barnes 提交于
      This could be useful for debug in the future if we want to track
      major/minor faults more closely, and also avoids the put_page trick we
      used with gup.
      
      In order to do this, we also track the task struct in the PASID state
      structure.  This lets us update the appropriate task stats after the fault
      has been handled, and may aid with debug in the future as well.
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Tested-by: NOded Gabbay <oded.gabbay@amd.com>
      Cc: Joerg Roedel <jroedel@suse.de>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      9dc00f4c
    • G
      rtc: snvs: fix build with CONFIG_PM_SLEEP disabled · 88221c32
      Guenter Roeck 提交于
      Commit 7654e9d4 ("drivers/rtc/rtc-snvs: fix suspend/resume")
      replaces SIMPLE_DEV_PM_OPS with direct declaration of snvs_rtc_pm_ops,
      but does so outside #ifdef CONFIG_PM_SLEEP.  This causes the driver
      build to fail if CONFIG_PM_SLEEP is not configured.
      
      Fixes: 7654e9d4 ("drivers/rtc/rtc-snvs: fix suspend/resume")
      Signed-off-by: NGuenter Roeck <linux@roeck-us.net>
      Cc: Sanchayan Maity <maitysanchayan@gmail.com>
      Cc: Alessandro Zummo <a.zummo@towertech.it>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      88221c32
  2. 12 12月, 2014 23 次提交
  3. 11 12月, 2014 13 次提交