All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH V5 0/8] Add memcg dirty/writeback page accounting
@ 2013-08-01 11:43 ` Sha Zhengju
  0 siblings, 0 replies; 47+ messages in thread
From: Sha Zhengju @ 2013-08-01 11:43 UTC (permalink / raw)
  To: linux-mm-Bw31MaZKKs3YtjvyW6yDsg, cgroups-u79uwXL29TY76Z2rM5mHXA
  Cc: mhocko-AlSwsSmVLrQ, kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A,
	glommer-Re5JQEeQqe8AvxtiuMwx3w, gthelen-hpIqsD4AKlfQT0dZR+AlfA,
	fengguang.wu-ral2JQCrhuEAvxtiuMwx3w,
	akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b, Sha Zhengju

Hi,

This is V5 patch series that provide the ability for each memory cgroup to
have independent dirty/writeback page statistics.
Previous version is here:
  V4 - http://www.spinics.net/lists/cgroups/msg08200.html;
  V3 - http://lwn.net/Articles/530776/;
  V2 - http://lwn.net/Articles/508452/;
  V1 - http://lwn.net/Articles/504017/;

The first three patches are doing some cleanup and prepare works. The first two
is nothing changed since V3 and patch 3/8 is a new one to check proper locks held.
Patch 4/8 and 5/8 are doing memcg dirty and writeback page accounting, which adds
statistic codes in several hot paths.

Patch 6/8 and 7/8 are trying to wipe off the overheads introduced in by previous
two patches, and this is the main changes towards V3. Patch 6 is a prepare one
to make nocpu_base available for all usages not only hotplug cases. I stealed it
from Glauber Costa - http://www.spinics.net/lists/cgroups/msg06233.html. Patch 7
is doing some optimization by jump label: if only root memcg exists, we don't
need to do page stat accounting and transfer global page stats to root only when
the first non-root memcg is created.  

Some perforcemance numbers got by Mel's pft test (On a 4g memory and 4-core
i5 CPU machine):

vanilla  : memcg enabled, patch not applied
patched  : all patches are patched

* Duration numbers:
             vanilla     patched
User          385.38      379.47
System         65.12       66.46
Elapsed       457.46      452.21

* Summary numbers:
vanilla:
Clients User        System      Elapsed     Faults/cpu  Faults/sec  
1       0.03        0.18        0.21        931682.645  910993.850  
2       0.03        0.22        0.13        760431.152  1472985.863 
3       0.03        0.29        0.12        600495.043  1620311.084 
4       0.04        0.37        0.12        475380.531  1688013.267

patched:
Clients User        System      Elapsed     Faults/cpu  Faults/sec  
1       0.02        0.19        0.22        915362.875  898763.732  
2       0.03        0.23        0.13        757518.387  1464893.996 
3       0.03        0.30        0.12        592113.126  1611873.469 
4       0.04        0.38        0.12        472203.393  1680013.271

We can see the performance gap is minor.

Change log:
v5 <-- v4:
	1. add patch 3 to check proper lock held suggested by Michal Hock
        2. add another two interfaces which should call mem_cgroup_begin/end_
	   update_page_stat() in dirty page accounting
        3. make nobase_cpu not only used in hotplug cases
        4. don't account root memcg page stats if only root exist
v4 <-- v3:
	1. give up reworking vfs codes
	2. change lock order of memcg->move_lock and mapping->tree_lock
	3. patch out mem_cgroup_{begin,end}_update_page_stat when not used
	4. rebased to since-3.10 branch
v3 <-- v2:
	1. change lock order of mapping->tree_lock and memcg->move_lock
	2. performance optimization in 6/8 and 7/8
v2 <-- v1:
        1. add test numbers
        2. some small fix and comments

Glauber Costa (1):
      memcg: make nocpu_base available for non-hotplug

Sha Zhengju (7):
      memcg: remove MEMCG_NR_FILE_MAPPED
      fs/ceph: vfs __set_page_dirty_nobuffers interface instead of doing it inside filesystem
      memcg: check for proper lock held in mem_cgroup_update_page_stat
      memcg: add per cgroup dirty pages accounting
      memcg: add per cgroup writeback pages accounting
      memcg: patch mem_cgroup_{begin,end}_update_page_stat() out if only root memcg exists
      memcg: Document cgroup dirty/writeback memory statistics

 Documentation/cgroups/memory.txt |    2 +
 fs/buffer.c                      |   13 +++
 fs/ceph/addr.c                   |   13 +--
 include/linux/memcontrol.h       |   47 ++++++++--
 mm/filemap.c                     |   17 +++-
 mm/memcontrol.c                  |  189 +++++++++++++++++++++++++++++---------
 mm/page-writeback.c              |   39 +++++++-
 mm/rmap.c                        |    4 +-
 mm/truncate.c                    |   12 +++
 mm/vmscan.c                      |    7 ++
 10 files changed, 273 insertions(+), 70 deletions(-)

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

end of thread, other threads:[~2013-08-23 16:11 UTC | newest]

Thread overview: 47+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-08-01 11:43 [PATCH V5 0/8] Add memcg dirty/writeback page accounting Sha Zhengju
2013-08-01 11:43 ` Sha Zhengju
2013-08-01 11:44 ` [PATCH 1/8] memcg: remove MEMCG_NR_FILE_MAPPED Sha Zhengju
2013-08-01 11:51 ` [PATCH V5 2/8] fs/ceph: vfs __set_page_dirty_nobuffers interface instead of doing it inside filesystem Sha Zhengju
2013-08-01 15:19   ` Yan, Zheng
2013-08-01 18:27     ` Sage Weil
2013-08-02 10:04       ` Sha Zhengju
     [not found]         ` <CAFj3OHVXvtr5BDMrGatHZi7M9y+dh1ZKRMQZGjZmNBcg3pNQtw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-08-02 20:30           ` Sage Weil
2013-08-02 20:30             ` Sage Weil
2013-08-03  8:58             ` Sha Zhengju
2013-08-02  9:04     ` Sha Zhengju
2013-08-02  9:04       ` Sha Zhengju
2013-08-02 13:11       ` Yan, Zheng
2013-08-01 11:52 ` [PATCH V5 3/8] memcg: check for proper lock held in mem_cgroup_update_page_stat Sha Zhengju
     [not found]   ` <1375357946-10228-1-git-send-email-handai.szj-3b8fjiQLQpfQT0dZR+AlfA@public.gmane.org>
2013-08-01 14:34     ` Michal Hocko
2013-08-01 14:34       ` Michal Hocko
2013-08-04 18:48   ` Greg Thelen
2013-08-04 18:48     ` Greg Thelen
2013-08-01 11:53 ` [PATCH V5 4/8] memcg: add per cgroup dirty pages accounting Sha Zhengju
2013-08-01 11:54 ` [PATCH V5 5/8] memcg: add per cgroup writeback " Sha Zhengju
2013-08-01 14:53   ` Michal Hocko
     [not found]     ` <20130801145302.GJ5198-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2013-08-03  9:25       ` Sha Zhengju
2013-08-03  9:25         ` Sha Zhengju
     [not found]         ` <CAFj3OHV-VCKJfe6bv4UMvv+uj4LELDXsieRZFJD06Yrdyy=XxA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-08-04 10:08           ` Michal Hocko
2013-08-04 10:08             ` Michal Hocko
2013-08-22  9:46             ` Fwd: " Sha Zhengju
2013-08-22  9:46               ` Sha Zhengju
2013-08-22  9:50               ` [PATCH 1/4] memcg: remove MEMCG_NR_FILE_MAPPED Sha Zhengju
2013-08-22  9:52               ` [PATCH 2/4] memcg: check for proper lock held in mem_cgroup_update_page_stat Sha Zhengju
2013-08-22  9:53               ` [PATCH 3/4] memcg: add per cgroup writeback pages accounting Sha Zhengju
2013-08-22 22:40                 ` Andrew Morton
2013-08-23 16:11                   ` Sha Zhengju
2013-08-23 16:11                     ` Sha Zhengju
2013-08-22  9:53               ` [PATCH 4/4] memcg: Document cgroup dirty/writeback memory statistics Sha Zhengju
2013-08-04 18:51   ` [PATCH V5 5/8] memcg: add per cgroup writeback pages accounting Greg Thelen
2013-08-04 18:51     ` Greg Thelen
2013-08-01 11:55 ` [PATCH V5 6/8] memcg: make nocpu_base available for non-hotplug Sha Zhengju
2013-08-01 12:00 ` [PATCH V5 7/8] memcg: don't account root memcg page stats if only root exists Sha Zhengju
2013-08-01 16:20   ` Johannes Weiner
     [not found]     ` <20130801162012.GA23319-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2013-08-02  4:32       ` Sha Zhengju
2013-08-02  4:32         ` Sha Zhengju
     [not found]         ` <CAFj3OHUxir9kUXgHfOb1m6LDzO8HBG68CDi3MzV54sC0jdP=iQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-08-05 21:58           ` Johannes Weiner
2013-08-05 21:58             ` Johannes Weiner
     [not found] ` <1375357402-9811-1-git-send-email-handai.szj-3b8fjiQLQpfQT0dZR+AlfA@public.gmane.org>
2013-08-01 12:00   ` [PATCH V5 8/8] memcg: Document cgroup dirty/writeback memory statistics Sha Zhengju
2013-08-01 12:00     ` Sha Zhengju
2013-08-01 14:43 ` [PATCH V5 0/8] Add memcg dirty/writeback page accounting Michal Hocko
2013-08-03  9:30   ` Sha Zhengju

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.