memcg: move charges of anonymous page
authorDaisuke Nishimura <[email protected]>
Wed, 10 Mar 2010 23:22:14 +0000 (15:22 -0800)
committerLinus Torvalds <[email protected]>
Fri, 12 Mar 2010 23:52:36 +0000 (15:52 -0800)
commit4ffef5feff4e4240e767d2f1144b1634a41762e3
tree14793120e5809008c2587d89162d8d57130d6fc8
parent7dc74be032bfcaa2f9d9e4296ff5bbddfa9e2f19
memcg: move charges of anonymous page

This patch is the core part of this move-charge-at-task-migration feature.
 It implements functions to move charges of anonymous pages mapped only by
the target task.

Implementation:
- define struct move_charge_struct and a valuable of it(mc) to remember the
  count of pre-charges and other information.
- At can_attach(), get anon_rss of the target mm, call __mem_cgroup_try_charge()
  repeatedly and count up mc.precharge.
- At attach(), parse the page table, find a target page to be move, and call
  mem_cgroup_move_account() about the page.
- Cancel all precharges if mc.precharge > 0 on failure or at the end of
  task move.

[[email protected]: a little simplification]
Signed-off-by: Daisuke Nishimura <[email protected]>
Cc: Balbir Singh <[email protected]>
Acked-by: KAMEZAWA Hiroyuki <[email protected]>
Cc: Li Zefan <[email protected]>
Cc: Paul Menage <[email protected]>
Cc: Daisuke Nishimura <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
mm/memcontrol.c