linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [RFC][EXPERIMENTAL][PATCH 0/8] memcg: migrate charge at task move
@ 2009-09-17  2:23 Daisuke Nishimura
  2009-09-17  2:24 ` [PATCH 1/8] memcg: introduce mem_cgroup_cancel_charge() Daisuke Nishimura
                   ` (8 more replies)
  0 siblings, 9 replies; 49+ messages in thread
From: Daisuke Nishimura @ 2009-09-17  2:23 UTC (permalink / raw)
  To: linux-mm
  Cc: Balbir Singh, KAMEZAWA Hiroyuki, Paul Menage, Li Zefan,
	Daisuke Nishimura

Hi.

These are patches for migrating memcg's charge at task move.

I know we should fix res_counter's scalability problem first,
but this feature is also important for me, so I tried making patches
and they seem to work basically.
I post them(based on mmotm-2009-09-14-01-57) before going further to get some feedbacks.


Basic design:
- Add flag file "memory.migrate_charge" to determine whether charges should be
  migrated or not. Each bit of "memory.migrate_charge" has meaning(indicate the
  type of pages the charges of which should be migrated).
- At can_attach(), isolate pages of the task, call __mem_cgroup_try_charge,
  and move them to a private list.
- Call mem_cgroup_move_account() at attach() about all pages on the private list
  after necessary checks under page_cgroup lock, and put back them to LRU.
- Cancel charges about all pages remains on the private list on failure or at the end
  of charge migration, and put back them to LRU.


I think this design is simple but it has a problem when mounted on the same hierarchy
with cpuset. This design isolate pages of the task at can_attach(), but attach() of cpuset
also tries to isolate pages of the task and migrate them if cpuset.memory_migrate is set.
As a result, pages cannot be memory migrated by cpuset if we set memory.migrate_charge.
But I think this problem can be handled by user-space to some extent: for example,
move the task back and move it again with memory.migrate_charge unset.
So I went to this direction as a first step(I'm considering how to avoid this issue).


Any comments or suggestions would be welcome.


Thanks,
Daisuke Nishimura.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 49+ messages in thread

end of thread, other threads:[~2009-09-25  5:54 UTC | newest]

Thread overview: 49+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-09-17  2:23 [RFC][EXPERIMENTAL][PATCH 0/8] memcg: migrate charge at task move Daisuke Nishimura
2009-09-17  2:24 ` [PATCH 1/8] memcg: introduce mem_cgroup_cancel_charge() Daisuke Nishimura
2009-09-17  4:12   ` KAMEZAWA Hiroyuki
2009-09-17  2:24 ` [PATCH 2/8] memcg: cleanup mem_cgroup_move_parent() Daisuke Nishimura
2009-09-17  4:15   ` KAMEZAWA Hiroyuki
2009-09-17  2:25 ` [PATCH 3/8] cgroup: introduce cancel_attach() Daisuke Nishimura
2009-09-17  2:26 ` [PATCH 4/8] memcg: add interface to migrate charge Daisuke Nishimura
2009-09-17  4:20   ` KAMEZAWA Hiroyuki
2009-09-17  4:40     ` Daisuke Nishimura
2009-09-17  2:26 ` [PATCH 5/8] memcg: migrate charge of anon Daisuke Nishimura
2009-09-17  4:57   ` KAMEZAWA Hiroyuki
2009-09-17  5:56     ` Daisuke Nishimura
2009-09-17  6:25       ` KAMEZAWA Hiroyuki
2009-09-17 23:52     ` KOSAKI Motohiro
2009-09-17  2:27 ` [PATCH 6/8] memcg: migrate charge of shmem Daisuke Nishimura
2009-09-17  5:02   ` KAMEZAWA Hiroyuki
2009-09-17  2:28 ` [PATCH 7/8] memcg: migrate charge of swap Daisuke Nishimura
2009-09-17  5:25   ` KAMEZAWA Hiroyuki
2009-09-17  6:17     ` Daisuke Nishimura
2009-09-17  6:28       ` KAMEZAWA Hiroyuki
2009-09-17  2:29 ` [PATCH 8/8] memcg: avoid oom during charge migration Daisuke Nishimura
2009-09-17  7:01 ` [RFC][EXPERIMENTAL][PATCH 0/8] memcg: migrate charge at task move Daisuke Nishimura
2009-09-24  5:42   ` [RFC][PATCH 0/8] memcg: migrate charge at task move (24/Sep) Daisuke Nishimura
2009-09-24  5:43     ` [RFC][PATCH 1/8] cgroup: introduce cancel_attach() Daisuke Nishimura
2009-09-24  6:33       ` KAMEZAWA Hiroyuki
2009-09-24 23:39         ` Daisuke Nishimura
2009-09-24  5:44     ` [RFC][PATCH 2/8] memcg: introduce mem_cgroup_cancel_charge() Daisuke Nishimura
2009-09-24  5:46     ` [RFC][PATCH 3/8] memcg: cleanup mem_cgroup_move_parent() Daisuke Nishimura
2009-09-24  6:37       ` KAMEZAWA Hiroyuki
2009-09-24  6:54         ` Daisuke Nishimura
2009-09-24  5:47     ` [RFC][PATCH 4/8] memcg: add interface to migrate charge Daisuke Nishimura
2009-09-24  6:54       ` KAMEZAWA Hiroyuki
2009-09-24 23:39         ` Daisuke Nishimura
2009-09-24  5:48     ` [RFC][PATCH 5/8] memcg: migrate charge of mapped page Daisuke Nishimura
2009-09-24  7:22       ` KAMEZAWA Hiroyuki
2009-09-24  8:00         ` Daisuke Nishimura
2009-09-25  0:28           ` Daisuke Nishimura
2009-09-25  0:49             ` KAMEZAWA Hiroyuki
2009-09-24  5:49     ` [RFC][PATCH 6/8] memcg: avoid oom during charge migration Daisuke Nishimura
2009-09-24  7:34       ` KAMEZAWA Hiroyuki
2009-09-25  1:44         ` Daisuke Nishimura
2009-09-25  1:55           ` KAMEZAWA Hiroyuki
2009-09-25  4:51             ` Daisuke Nishimura
2009-09-25  5:36               ` Daisuke Nishimura
2009-09-25  5:52                 ` KAMEZAWA Hiroyuki
2009-09-24  5:49     ` [RFC][PATCH 7/8] memcg: migrate charge of swap Daisuke Nishimura
2009-09-24  5:50     ` [RFC][PATCH 8/8] memcg: migrate charge of shmem swap Daisuke Nishimura
2009-09-24  7:41       ` KAMEZAWA Hiroyuki
2009-09-25  0:28         ` Daisuke Nishimura

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox