From: Sha Zhengju <handai.szj@gmail.com>
To: linux-mm@kvack.org, cgroups@vger.kernel.org
Cc: mhocko@suse.cz, kamezawa.hiroyu@jp.fujitsu.com,
glommer@gmail.com, gthelen@google.com, fengguang.wu@intel.com,
akpm@linux-foundation.org, Sha Zhengju <handai.szj@taobao.com>
Subject: [PATCH V5 0/8] Add memcg dirty/writeback page accounting
Date: Thu, 1 Aug 2013 19:43:22 +0800 [thread overview]
Message-ID: <1375357402-9811-1-git-send-email-handai.szj@taobao.com> (raw)
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(-)
--
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>
next reply other threads:[~2013-08-01 11:43 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-01 11:43 Sha Zhengju [this message]
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
2013-08-02 20:30 ` Sage Weil
2013-08-03 8:58 ` 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
2013-08-01 14:34 ` Michal Hocko
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
2013-08-03 9:25 ` Sha Zhengju
2013-08-04 10:08 ` Michal Hocko
2013-08-22 9:46 ` Fwd: " 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-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-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
2013-08-02 4:32 ` Sha Zhengju
2013-08-05 21:58 ` Johannes Weiner
2013-08-01 12:00 ` [PATCH V5 8/8] memcg: Document cgroup dirty/writeback memory statistics 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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1375357402-9811-1-git-send-email-handai.szj@taobao.com \
--to=handai.szj@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=cgroups@vger.kernel.org \
--cc=fengguang.wu@intel.com \
--cc=glommer@gmail.com \
--cc=gthelen@google.com \
--cc=handai.szj@taobao.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=linux-mm@kvack.org \
--cc=mhocko@suse.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox