linux/include
Johannes Weiner 0030f535a5 mm: memcg: fix compaction/migration failing due to memcg limits
Compaction (and page migration in general) can currently be hindered
through pages being owned by memory cgroups that are at their limits and
unreclaimable.

The reason is that the replacement page is being charged against the limit
while the page being replaced is also still charged.  But this seems
unnecessary, given that only one of the two pages will still be in use
after migration finishes.

This patch changes the memcg migration sequence so that the replacement
page is not charged.  Whatever page is still in use after successful or
failed migration gets to keep the charge of the page that was going to be
replaced.

The replacement page will still show up temporarily in the rss/cache
statistics, this can be fixed in a later patch as it's less urgent.

Reported-by: David Rientjes <rientjes@google.com>
Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Acked-by: Michal Hocko <mhocko@suse.cz>
Cc: Hugh Dickins <hughd@google.com>
Cc: David Rientjes <rientjes@google.com>
Cc: Wanpeng Li <liwp.linux@gmail.com>
Cc: Mel Gorman <mel@csn.ul.ie>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-07-31 18:42:48 -07:00
..
acpi Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux 2012-07-26 14:28:55 -07:00
asm-generic Merge branch 'akpm' (Andrew's patch-bomb) 2012-07-30 17:25:34 -07:00
crypto
drm drm/exynos: add property for plane zpos 2012-07-27 11:13:54 +09:00
keys
linux mm: memcg: fix compaction/migration failing due to memcg limits 2012-07-31 18:42:48 -07:00
math-emu
media [media] media: gpio-ir-recv: add allowed_protos for platform data 2012-07-06 18:21:53 -03:00
memory
misc
mtd
net netvm: prevent a stream-specific deadlock 2012-07-31 18:42:47 -07:00
pcmcia
ras
rdma Merge branches 'cma', 'cxgb4', 'misc', 'mlx4-sriov', 'mlx-cleanups', 'ocrdma' and 'qib' into for-linus 2012-07-22 23:26:17 -07:00
rxrpc
scsi Merge branch 'master' [vanilla Linus master] into libata-dev.git/upstream 2012-07-25 15:58:48 -04:00
sound Merge branch 'topic/pm-convert' into for-next 2012-07-19 08:21:57 +02:00
target target: Allow for target_submit_cmd() returning errors 2012-07-17 17:05:05 -07:00
trace mm: introduce __GFP_MEMALLOC to allow access to emergency reserves 2012-07-31 18:42:45 -07:00
video
xen xen PVonHVM: move shared_info to MMIO before kexec 2012-07-19 15:52:05 -04:00
Kbuild