Files
linux/Documentation
Daisuke Nishimura 024914477e memcg: move charges of anonymous swap
This patch is another core part of this move-charge-at-task-migration
feature.  It enables moving charges of anonymous swaps.

To move the charge of swap, we need to exchange swap_cgroup's record.

In current implementation, swap_cgroup's record is protected by:

  - page lock: if the entry is on swap cache.
  - swap_lock: if the entry is not on swap cache.

This works well in usual swap-in/out activity.

But this behavior make the feature of moving swap charge check many
conditions to exchange swap_cgroup's record safely.

So I changed modification of swap_cgroup's recored(swap_cgroup_record())
to use xchg, and define a new function to cmpxchg swap_cgroup's record.

This patch also enables moving charge of non pte_present but not uncharged
swap caches, which can be exist on swap-out path, by getting the target
pages via find_get_page() as do_mincore() does.

[kosaki.motohiro@jp.fujitsu.com: fix ia64 build]
[akpm@linux-foundation.org: fix typos]
Signed-off-by: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
Cc: Balbir Singh <balbir@linux.vnet.ibm.com>
Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Li Zefan <lizf@cn.fujitsu.com>
Cc: Paul Menage <menage@google.com>
Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-03-12 15:52:36 -08:00
..
2009-10-01 21:17:49 +02:00
2008-02-14 00:16:13 -05:00
2008-10-16 11:21:30 -07:00
2009-12-16 07:20:05 -08:00
2008-02-03 15:54:28 +02:00
2010-03-02 12:23:49 +01:00
2009-12-09 14:21:36 -08:00
2010-02-28 23:55:20 -08:00
2009-12-12 13:08:16 +01:00
2010-03-01 12:35:43 -03:00
2009-06-18 13:04:04 -07:00
2010-02-26 22:37:29 +01:00
2009-10-04 22:53:41 +02:00
2008-12-03 16:09:53 -07:00
2008-07-25 10:53:30 -07:00
2008-11-14 10:39:26 +11:00
2009-10-15 07:25:20 -06:00
2008-03-24 19:22:19 -07:00
2009-07-01 22:36:22 +02:00
2009-08-28 15:21:12 -04:00
2009-04-27 12:00:27 -07:00
2009-04-27 12:00:27 -07:00
2008-11-12 17:17:17 -08:00
2009-04-14 09:00:23 +10:00