linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* rework mem_cgroup iterator
@ 2012-11-26 18:47 Michal Hocko
  2012-11-26 18:47 ` [patch v2 1/6] memcg: synchronize per-zone iterator access by a spinlock Michal Hocko
                   ` (5 more replies)
  0 siblings, 6 replies; 57+ messages in thread
From: Michal Hocko @ 2012-11-26 18:47 UTC (permalink / raw)
  To: linux-mm
  Cc: linux-kernel, KAMEZAWA Hiroyuki, Johannes Weiner, Ying Han,
	Tejun Heo, Glauber Costa, Li Zefan

Hi all,
this is a second version of the patchset previously posted here:
https://lkml.org/lkml/2012/11/13/335

The patch set tries to make mem_cgroup_iter saner in the way how it
walks hierarchies. css->id based traversal is far from being ideal as it
is not deterministic because it depends on the creation ordering.

Diffstat looks promising but it is fair the say that the biggest cleanup is
just css_get_next removal. The memcg code has grown a bit but I think it is
worth the resulting outcome (the sanity ;)).

The first patch fixes a potential misbehaving which I haven't seen but the
fix is needed for the later patches anyway. We could take it alone as well
but I do not have any bug report to base the fix on. The second one is also
preparatory and it is new to the series.

The third patch replaces css_get_next by cgroup iterators which are
scheduled for 3.8 in Tejun's tree and I depend on the following two patches:
fe1e904c cgroup: implement generic child / descendant walk macros
7e187c6c cgroup: use rculist ops for cgroup->children

The third and fourth patches are an attempt for simplification of the
mem_cgroup_iter. css juggling is removed and the iteration logic is
moved to a helper so that the reference counting and iteration are
separated.

The last patch just removes css_get_next as there is no user for it any
longer.

I am also thinking that leaf-to-root iteration makes more sense but this
patch is not included in the series yet because I have to think some
more about the justification.

I have dropped "[RFC 4/5] memcg: clean up mem_cgroup_iter"
(https://lkml.org/lkml/2012/11/13/333) because testing quickly shown
that my thinking was flawed and VM_BUG_ON(!prev && !memcg) triggered
very quickly. This also suggest that this version has seen some testing,
unlike the previous one ;)
The test was simple but I guess it exercised this code path quite heavily.
        A (limit = 280M, use_hierarchy=true)
      / | \
     B  C  D (all have 100M limit)

and independent kernel build (with the full distribution config) in
all children groups. This triggers both children only and hierarchical
reclaims.

The shortlog says:
Michal Hocko (6):
      memcg: synchronize per-zone iterator access by a spinlock
      memcg: keep prev's css alive for the whole mem_cgroup_iter
      memcg: rework mem_cgroup_iter to use cgroup iterators
      memcg: simplify mem_cgroup_iter
      memcg: further simplify mem_cgroup_iter
      cgroup: remove css_get_next

And diffstat:
 include/linux/cgroup.h |    7 ---
 kernel/cgroup.c        |   49 ---------------------
 mm/memcontrol.c        |  110 +++++++++++++++++++++++++++++++++++++-----------
 3 files changed, 86 insertions(+), 80 deletions(-)

--
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] 57+ messages in thread

end of thread, other threads:[~2012-12-14 23:08 UTC | newest]

Thread overview: 57+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-11-26 18:47 rework mem_cgroup iterator Michal Hocko
2012-11-26 18:47 ` [patch v2 1/6] memcg: synchronize per-zone iterator access by a spinlock Michal Hocko
2012-11-26 18:47 ` [patch v2 2/6] memcg: keep prev's css alive for the whole mem_cgroup_iter Michal Hocko
2012-11-28  8:38   ` Kamezawa Hiroyuki
2012-11-26 18:47 ` [patch v2 3/6] memcg: rework mem_cgroup_iter to use cgroup iterators Michal Hocko
2012-11-28  8:47   ` Kamezawa Hiroyuki
2012-11-28  9:17     ` Michal Hocko
2012-11-28  9:23       ` Glauber Costa
2012-11-28  9:33         ` Michal Hocko
2012-11-28  9:35           ` Glauber Costa
2012-11-30  4:07   ` Kamezawa Hiroyuki
2012-12-07  3:39   ` Ying Han
2012-12-07  3:43     ` Ying Han
2012-12-07  8:58       ` Michal Hocko
2012-12-07 17:12         ` Ying Han
2012-12-07 17:27           ` Michal Hocko
2012-12-07 19:16             ` Ying Han
2012-12-07 19:35               ` Michal Hocko
2012-12-07  9:01     ` Michal Hocko
2012-12-09 16:59   ` Ying Han
2012-12-11 15:50     ` Michal Hocko
2012-12-11 16:15       ` Michal Hocko
2012-12-11 18:10         ` Michal Hocko
2012-12-11 22:43         ` Ying Han
2012-12-12  8:55           ` Michal Hocko
2012-12-12 17:57             ` Ying Han
2012-12-12 18:08               ` Michal Hocko
2012-12-11 22:31       ` Ying Han
2012-12-09 19:39   ` Ying Han
2012-12-11 15:54     ` Michal Hocko
2012-12-11 22:36       ` Ying Han
2012-12-12  9:06         ` Michal Hocko
2012-12-12 18:09           ` Ying Han
2012-12-12 18:34             ` Michal Hocko
2012-12-12 18:42               ` Michal Hocko
2012-12-14  1:06                 ` Ying Han
2012-12-14 10:56                   ` [PATCH] memcg,vmscan: do not break out targeted reclaim without reclaimed pages Michal Hocko
2012-12-12 19:24           ` [patch v2 3/6] memcg: rework mem_cgroup_iter to use cgroup iterators Michal Hocko
2012-12-14  1:14             ` Ying Han
2012-12-14 12:07               ` Michal Hocko
2012-12-14 23:08                 ` Ying Han
2012-12-14 12:37             ` Michal Hocko
2012-11-26 18:47 ` [patch v2 4/6] memcg: simplify mem_cgroup_iter Michal Hocko
2012-11-28  8:52   ` Kamezawa Hiroyuki
2012-11-30  4:09   ` Kamezawa Hiroyuki
2012-12-09 17:01   ` Ying Han
2012-12-11 15:57     ` Michal Hocko
2012-12-11  4:35   ` Ying Han
2012-12-11 16:01     ` Michal Hocko
2012-12-11 22:52       ` Ying Han
2012-11-26 18:47 ` [patch v2 5/6] memcg: further " Michal Hocko
2012-11-30  4:10   ` Kamezawa Hiroyuki
2012-11-30  9:08   ` Glauber Costa
2012-11-30 10:23     ` Michal Hocko
2012-11-26 18:47 ` [patch v2 6/6] cgroup: remove css_get_next Michal Hocko
2012-11-30  4:12   ` Kamezawa Hiroyuki
2012-11-30  8:18     ` Michal Hocko

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).