linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [RFC][PATCH 0/8] memcg: recharge at task move (Oct13)
@ 2009-10-13  4:49 Daisuke Nishimura
  2009-10-13  4:50 ` [RFC][PATCH 1/8] cgroup: introduce cancel_attach() Daisuke Nishimura
                   ` (8 more replies)
  0 siblings, 9 replies; 17+ messages in thread
From: Daisuke Nishimura @ 2009-10-13  4:49 UTC (permalink / raw)
  To: linux-mm; +Cc: KAMEZAWA Hiroyuki, Balbir Singh, Daisuke Nishimura

Hi.

These are my current patches for recharge at task move.

In current memcg, charges associated with a task aren't moved to the new cgroup
at task move. These patches are for this feature, that is, for recharging to
the new cgroup and, of course, uncharging from old cgroup at task move.

I've tested these patches on 2.6.32-rc3(+ some patches) with memory pressure
and rmdir, they didn't cause any BUGs during last weekend.

Major Changes from Sep24:
- rebased on mmotm-2009-10-09-01-07 + KAMEZAWA-san's batched charge/uncharge(Oct09)
  + part of KAMEZAWA-san's cleanup/fix patches(4,5,7 of Sep25 with some fixes).
- changed the term "migrate" to "recharge".

TODO:
- update Documentation/cgroup/memory.txt
- implement madvise(2) (MADV_MEMCG_RECHARGE/NORECHARGE)

Any comments or suggestions would be welcome.


Thanks,
Dasiuke 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] 17+ messages in thread
* [RFC][EXPERIMENTAL][PATCH 0/8] memcg: migrate charge at task move
@ 2009-09-17  2:23 Daisuke Nishimura
  2009-09-17  7:01 ` Daisuke Nishimura
  0 siblings, 1 reply; 17+ 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] 17+ messages in thread

end of thread, other threads:[~2009-10-15 11:08 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-10-13  4:49 [RFC][PATCH 0/8] memcg: recharge at task move (Oct13) Daisuke Nishimura
2009-10-13  4:50 ` [RFC][PATCH 1/8] cgroup: introduce cancel_attach() Daisuke Nishimura
2009-10-15  7:37   ` Paul Menage
2009-10-15  8:50     ` Paul Menage
2009-10-15 11:08     ` Daisuke Nishimura
2009-10-13  4:51 ` [RFC][PATCH 2/8] memcg: cleanup mem_cgroup_move_parent() Daisuke Nishimura
2009-10-13  4:52 ` [RFC][PATCH 3/8] memcg: move memcg_tasklist mutex Daisuke Nishimura
2009-10-13  4:53 ` [RFC][PATCH 4/8] memcg: add interface to recharge at task move Daisuke Nishimura
2009-10-13  4:55 ` [RFC][PATCH 5/8] memcg: recharge charges of mapped page Daisuke Nishimura
2009-10-13  4:56 ` [RFC][PATCH 6/8] memcg: avoid oom during recharge at task move Daisuke Nishimura
2009-10-13  4:57 ` [RFC][PATCH 7/8] memcg: recharge charges of anonymous swap Daisuke Nishimura
2009-10-13  4:58 ` [RFC][PATCH 8/8] memcg: recharge charges of shmem swap Daisuke Nishimura
2009-10-14  7:03 ` [RFC][PATCH 0/8] memcg: recharge at task move (Oct13) KAMEZAWA Hiroyuki
2009-10-15  0:27   ` Daisuke Nishimura
  -- strict thread matches above, loose matches on Subject: below --
2009-09-17  2:23 [RFC][EXPERIMENTAL][PATCH 0/8] memcg: migrate charge at task move Daisuke Nishimura
2009-09-17  7:01 ` 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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).