]> git.karo-electronics.de Git - karo-tx-linux.git/commit
mm: vmscan: remove lumpy reclaim
authorMel Gorman <mgorman@suse.de>
Thu, 12 Apr 2012 22:51:59 +0000 (08:51 +1000)
committerStephen Rothwell <sfr@canb.auug.org.au>
Tue, 17 Apr 2012 03:47:18 +0000 (13:47 +1000)
commitc4c11eab6da7a50d7e7345a89859143a989e1335
tree207353a81e2a2c34065c61db4c2f66859a403621
parent0996d3431e003056087c4a81998fdfa80f7aaa29
mm: vmscan: remove lumpy reclaim

Lumpy reclaim had a purpose but in the mind of some, it was to kick the
system so hard it thrashed.  For others the purpose was to complicate
vmscan.c.  Over time it was giving softer shoes and a nicer attitude but
memory compaction needs to step up and replace it so this patch sends
lumpy reclaim to the farm.

Here are the important notes related to the patch.

1. The tracepoint format changes for isolating LRU pages.

2. This patch stops reclaim/compaction entering sync reclaim as this
   was only intended for lumpy reclaim and an oversight.  Page migration
   has its own logic for stalling on writeback pages if necessary and
   memory compaction is already using it.  This is a behaviour change.

3. RECLAIM_MODE_SYNC no longer exists.  pageout() does not stall on
   PageWriteback with CONFIG_COMPACTION.  It has been this way for a
   while.  I am calling it out in case this is a surpise to people.  This
   behaviour avoids a situation where we wait on a page being written back
   to slow storage like USB.  Currently we depend on wait_iff_congested()
   for throttling if if too many dirty pages are scanned.

4. Reclaim/compaction can no longer queue dirty pages in pageout() if
   the underlying BDI is congested.  Lumpy reclaim used this logic and
   reclaim/compaction was using it in error.  This is a behaviour change.

Signed-off-by: Mel Gorman <mgorman@suse.de>
Cc: Rik van Riel <riel@redhat.com>
Cc: Konstantin Khlebnikov <khlebnikov@openvz.org>
Cc: Hugh Dickins <hughd@google.com>
Cc: Andy Whitcroft <apw@shadowen.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
include/trace/events/vmscan.h
mm/vmscan.c