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>
WARNING: multiple messages have this Message-ID (diff)
From: Sha Zhengju <handai.szj-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> To: linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org, cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: mhocko-AlSwsSmVLrQ@public.gmane.org, kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org, glommer-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, gthelen-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, fengguang.wu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org, akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org, Sha Zhengju <handai.szj-3b8fjiQLQpfQT0dZR+AlfA@public.gmane.org> 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(-)
next reply other threads:[~2013-08-01 11:43 UTC|newest] Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-08-01 11:43 Sha Zhengju [this message] 2013-08-01 11:43 ` [PATCH V5 0/8] Add memcg dirty/writeback page accounting 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 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 2013-08-02 4:32 ` Sha Zhengju 2013-08-02 4:32 ` Sha Zhengju 2013-08-05 21:58 ` Johannes Weiner 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 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
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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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.