All of lore.kernel.org
 help / color / mirror / Atom feed
From: Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
To: Mel Gorman <mgorman-l3A5Bk7waGM@public.gmane.org>
Cc: Michal Hocko <mhocko-AlSwsSmVLrQ@public.gmane.org>,
	Andrew Morton
	<akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>,
	Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	Linux-CGroups <cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Linux-MM <linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org>,
	LKML <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: [PATCH 2/2] mm, memcg: Optionally disable memcg by default using Kconfig
Date: Wed, 20 May 2015 12:24:21 -0400	[thread overview]
Message-ID: <20150520162421.GB2874@cmpxchg.org> (raw)
In-Reply-To: <1432126245-10908-3-git-send-email-mgorman-l3A5Bk7waGM@public.gmane.org>

On Wed, May 20, 2015 at 01:50:45PM +0100, Mel Gorman wrote:
> memcg was reported years ago to have significant overhead when unused. It
> has improved but it's still the case that users that have no knowledge of
> memcg pay a small performance penalty.
>
> This patch adds a Kconfig that controls whether memcg is enabled by default
> and a kernel parameter cgroup_enable= to enable it if desired. Anyone using
> oldconfig will get the historical behaviour. It is not an option for most
> distributions to simply disable MEMCG as there are users that require it
> but they should also be knowledgable enough to use cgroup_enable=.
>
> This was evaluated using aim9, a page fault microbenchmark and ebizzy
> but I'll focus on the page fault microbenchmark. It can be reproduced
> using pft from mmtests (https://github.com/gormanm/mmtests).  Edit
> configs/config-global-dhp__pagealloc-performance and update MMTESTS to
> only contain pft. This is the relevant part of the profile summary
> 
> /usr/src/linux-4.0-chargefirst-v2r1/mm/memcontrol.c                  3.7907   223277
>   __mem_cgroup_count_vm_event                                                  1.143%    67312
>   mem_cgroup_page_lruvec                                                       0.465%    27403
>   mem_cgroup_commit_charge                                                     0.381%    22452
>   uncharge_list                                                                0.332%    19543
>   mem_cgroup_update_lru_size                                                   0.284%    16704
>   get_mem_cgroup_from_mm                                                       0.271%    15952
>   mem_cgroup_try_charge                                                        0.237%    13982
>   memcg_check_events                                                           0.222%    13058
>   mem_cgroup_charge_statistics.isra.22                                         0.185%    10920
>   commit_charge                                                                0.140%     8235
>   try_charge                                                                   0.131%     7716
> 
> It's showing 3.79% overhead in memcontrol.c when no memcgs are in
> use. Applying the patch and disabling memcg reduces this to 0.51%
> 
> /usr/src/linux-4.0-disable-v2r1/mm/memcontrol.c                      0.5100    29304
>   mem_cgroup_page_lruvec                                                       0.161%     9267
>   mem_cgroup_update_lru_size                                                   0.154%     8872
>   mem_cgroup_try_charge                                                        0.153%     8768
>   mem_cgroup_commit_charge                                                     0.042%     2397
> 
> pft faults
>                                        4.0.0                  4.0.0
>                                  chargefirst                disable
> Hmean    faults/cpu-1 1509075.7561 (  0.00%) 1508934.4568 ( -0.01%)
> Hmean    faults/cpu-3 1339160.7113 (  0.00%) 1379512.0698 (  3.01%)
> Hmean    faults/cpu-5  874174.1255 (  0.00%)  875741.7674 (  0.18%)
> Hmean    faults/cpu-7  601370.9977 (  0.00%)  599938.2026 ( -0.24%)
> Hmean    faults/cpu-8  510598.8214 (  0.00%)  510663.5402 (  0.01%)
> Hmean    faults/sec-1 1497935.5274 (  0.00%) 1496585.7400 ( -0.09%)
> Hmean    faults/sec-3 3941920.1520 (  0.00%) 4050811.9259 (  2.76%)
> Hmean    faults/sec-5 3869385.7553 (  0.00%) 3922299.6112 (  1.37%)
> Hmean    faults/sec-7 3992181.4189 (  0.00%) 3988511.0065 ( -0.09%)
> Hmean    faults/sec-8 3986452.2204 (  0.00%) 3977706.7883 ( -0.22%)
> 
> Low thread counts get a small boost but it's within noise as memcg overhead
> does not dominate. It's not obvious at all at higher thread counts as other
> factors cause more problems. The overall breakdown of CPU usage looks like
> 
>                4.0.0       4.0.0
>         chargefirst-v2r1disable-v2r1
> User           41.81       41.45
> System        407.64      405.50
> Elapsed       128.17      127.06

This is a worst case microbenchmark doing nothing but anonymous page
faults (with THP disabled), and yet the performance difference is in
the noise.  I don't see why we should burden the user with making a
decision that doesn't matter in theory, let alone in practice.

We have CONFIG_MEMCG and cgroup_disable=memory, that should be plenty
for users that obsess about fluctuation in the noise.  There is no
reason to complicate the world further for everybody else.

WARNING: multiple messages have this Message-ID (diff)
From: Johannes Weiner <hannes@cmpxchg.org>
To: Mel Gorman <mgorman@suse.de>
Cc: Michal Hocko <mhocko@suse.cz>,
	Andrew Morton <akpm@linux-foundation.org>,
	Tejun Heo <tj@kernel.org>,
	Linux-CGroups <cgroups@vger.kernel.org>,
	Linux-MM <linux-mm@kvack.org>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 2/2] mm, memcg: Optionally disable memcg by default using Kconfig
Date: Wed, 20 May 2015 12:24:21 -0400	[thread overview]
Message-ID: <20150520162421.GB2874@cmpxchg.org> (raw)
In-Reply-To: <1432126245-10908-3-git-send-email-mgorman@suse.de>

On Wed, May 20, 2015 at 01:50:45PM +0100, Mel Gorman wrote:
> memcg was reported years ago to have significant overhead when unused. It
> has improved but it's still the case that users that have no knowledge of
> memcg pay a small performance penalty.
>
> This patch adds a Kconfig that controls whether memcg is enabled by default
> and a kernel parameter cgroup_enable= to enable it if desired. Anyone using
> oldconfig will get the historical behaviour. It is not an option for most
> distributions to simply disable MEMCG as there are users that require it
> but they should also be knowledgable enough to use cgroup_enable=.
>
> This was evaluated using aim9, a page fault microbenchmark and ebizzy
> but I'll focus on the page fault microbenchmark. It can be reproduced
> using pft from mmtests (https://github.com/gormanm/mmtests).  Edit
> configs/config-global-dhp__pagealloc-performance and update MMTESTS to
> only contain pft. This is the relevant part of the profile summary
> 
> /usr/src/linux-4.0-chargefirst-v2r1/mm/memcontrol.c                  3.7907   223277
>   __mem_cgroup_count_vm_event                                                  1.143%    67312
>   mem_cgroup_page_lruvec                                                       0.465%    27403
>   mem_cgroup_commit_charge                                                     0.381%    22452
>   uncharge_list                                                                0.332%    19543
>   mem_cgroup_update_lru_size                                                   0.284%    16704
>   get_mem_cgroup_from_mm                                                       0.271%    15952
>   mem_cgroup_try_charge                                                        0.237%    13982
>   memcg_check_events                                                           0.222%    13058
>   mem_cgroup_charge_statistics.isra.22                                         0.185%    10920
>   commit_charge                                                                0.140%     8235
>   try_charge                                                                   0.131%     7716
> 
> It's showing 3.79% overhead in memcontrol.c when no memcgs are in
> use. Applying the patch and disabling memcg reduces this to 0.51%
> 
> /usr/src/linux-4.0-disable-v2r1/mm/memcontrol.c                      0.5100    29304
>   mem_cgroup_page_lruvec                                                       0.161%     9267
>   mem_cgroup_update_lru_size                                                   0.154%     8872
>   mem_cgroup_try_charge                                                        0.153%     8768
>   mem_cgroup_commit_charge                                                     0.042%     2397
> 
> pft faults
>                                        4.0.0                  4.0.0
>                                  chargefirst                disable
> Hmean    faults/cpu-1 1509075.7561 (  0.00%) 1508934.4568 ( -0.01%)
> Hmean    faults/cpu-3 1339160.7113 (  0.00%) 1379512.0698 (  3.01%)
> Hmean    faults/cpu-5  874174.1255 (  0.00%)  875741.7674 (  0.18%)
> Hmean    faults/cpu-7  601370.9977 (  0.00%)  599938.2026 ( -0.24%)
> Hmean    faults/cpu-8  510598.8214 (  0.00%)  510663.5402 (  0.01%)
> Hmean    faults/sec-1 1497935.5274 (  0.00%) 1496585.7400 ( -0.09%)
> Hmean    faults/sec-3 3941920.1520 (  0.00%) 4050811.9259 (  2.76%)
> Hmean    faults/sec-5 3869385.7553 (  0.00%) 3922299.6112 (  1.37%)
> Hmean    faults/sec-7 3992181.4189 (  0.00%) 3988511.0065 ( -0.09%)
> Hmean    faults/sec-8 3986452.2204 (  0.00%) 3977706.7883 ( -0.22%)
> 
> Low thread counts get a small boost but it's within noise as memcg overhead
> does not dominate. It's not obvious at all at higher thread counts as other
> factors cause more problems. The overall breakdown of CPU usage looks like
> 
>                4.0.0       4.0.0
>         chargefirst-v2r1disable-v2r1
> User           41.81       41.45
> System        407.64      405.50
> Elapsed       128.17      127.06

This is a worst case microbenchmark doing nothing but anonymous page
faults (with THP disabled), and yet the performance difference is in
the noise.  I don't see why we should burden the user with making a
decision that doesn't matter in theory, let alone in practice.

We have CONFIG_MEMCG and cgroup_disable=memory, that should be plenty
for users that obsess about fluctuation in the noise.  There is no
reason to complicate the world further for everybody else.

--
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: Johannes Weiner <hannes@cmpxchg.org>
To: Mel Gorman <mgorman@suse.de>
Cc: Michal Hocko <mhocko@suse.cz>,
	Andrew Morton <akpm@linux-foundation.org>,
	Tejun Heo <tj@kernel.org>,
	Linux-CGroups <cgroups@vger.kernel.org>,
	Linux-MM <linux-mm@kvack.org>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 2/2] mm, memcg: Optionally disable memcg by default using Kconfig
Date: Wed, 20 May 2015 12:24:21 -0400	[thread overview]
Message-ID: <20150520162421.GB2874@cmpxchg.org> (raw)
In-Reply-To: <1432126245-10908-3-git-send-email-mgorman@suse.de>

On Wed, May 20, 2015 at 01:50:45PM +0100, Mel Gorman wrote:
> memcg was reported years ago to have significant overhead when unused. It
> has improved but it's still the case that users that have no knowledge of
> memcg pay a small performance penalty.
>
> This patch adds a Kconfig that controls whether memcg is enabled by default
> and a kernel parameter cgroup_enable= to enable it if desired. Anyone using
> oldconfig will get the historical behaviour. It is not an option for most
> distributions to simply disable MEMCG as there are users that require it
> but they should also be knowledgable enough to use cgroup_enable=.
>
> This was evaluated using aim9, a page fault microbenchmark and ebizzy
> but I'll focus on the page fault microbenchmark. It can be reproduced
> using pft from mmtests (https://github.com/gormanm/mmtests).  Edit
> configs/config-global-dhp__pagealloc-performance and update MMTESTS to
> only contain pft. This is the relevant part of the profile summary
> 
> /usr/src/linux-4.0-chargefirst-v2r1/mm/memcontrol.c                  3.7907   223277
>   __mem_cgroup_count_vm_event                                                  1.143%    67312
>   mem_cgroup_page_lruvec                                                       0.465%    27403
>   mem_cgroup_commit_charge                                                     0.381%    22452
>   uncharge_list                                                                0.332%    19543
>   mem_cgroup_update_lru_size                                                   0.284%    16704
>   get_mem_cgroup_from_mm                                                       0.271%    15952
>   mem_cgroup_try_charge                                                        0.237%    13982
>   memcg_check_events                                                           0.222%    13058
>   mem_cgroup_charge_statistics.isra.22                                         0.185%    10920
>   commit_charge                                                                0.140%     8235
>   try_charge                                                                   0.131%     7716
> 
> It's showing 3.79% overhead in memcontrol.c when no memcgs are in
> use. Applying the patch and disabling memcg reduces this to 0.51%
> 
> /usr/src/linux-4.0-disable-v2r1/mm/memcontrol.c                      0.5100    29304
>   mem_cgroup_page_lruvec                                                       0.161%     9267
>   mem_cgroup_update_lru_size                                                   0.154%     8872
>   mem_cgroup_try_charge                                                        0.153%     8768
>   mem_cgroup_commit_charge                                                     0.042%     2397
> 
> pft faults
>                                        4.0.0                  4.0.0
>                                  chargefirst                disable
> Hmean    faults/cpu-1 1509075.7561 (  0.00%) 1508934.4568 ( -0.01%)
> Hmean    faults/cpu-3 1339160.7113 (  0.00%) 1379512.0698 (  3.01%)
> Hmean    faults/cpu-5  874174.1255 (  0.00%)  875741.7674 (  0.18%)
> Hmean    faults/cpu-7  601370.9977 (  0.00%)  599938.2026 ( -0.24%)
> Hmean    faults/cpu-8  510598.8214 (  0.00%)  510663.5402 (  0.01%)
> Hmean    faults/sec-1 1497935.5274 (  0.00%) 1496585.7400 ( -0.09%)
> Hmean    faults/sec-3 3941920.1520 (  0.00%) 4050811.9259 (  2.76%)
> Hmean    faults/sec-5 3869385.7553 (  0.00%) 3922299.6112 (  1.37%)
> Hmean    faults/sec-7 3992181.4189 (  0.00%) 3988511.0065 ( -0.09%)
> Hmean    faults/sec-8 3986452.2204 (  0.00%) 3977706.7883 ( -0.22%)
> 
> Low thread counts get a small boost but it's within noise as memcg overhead
> does not dominate. It's not obvious at all at higher thread counts as other
> factors cause more problems. The overall breakdown of CPU usage looks like
> 
>                4.0.0       4.0.0
>         chargefirst-v2r1disable-v2r1
> User           41.81       41.45
> System        407.64      405.50
> Elapsed       128.17      127.06

This is a worst case microbenchmark doing nothing but anonymous page
faults (with THP disabled), and yet the performance difference is in
the noise.  I don't see why we should burden the user with making a
decision that doesn't matter in theory, let alone in practice.

We have CONFIG_MEMCG and cgroup_disable=memory, that should be plenty
for users that obsess about fluctuation in the noise.  There is no
reason to complicate the world further for everybody else.

  parent reply	other threads:[~2015-05-20 16:24 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-20 12:50 [PATCH 0/2] Reduce overhead of memcg when unused Mel Gorman
2015-05-20 12:50 ` Mel Gorman
2015-05-20 12:50 ` Mel Gorman
2015-05-20 12:50 ` [PATCH 1/2] mm, memcg: Try charging a page before setting page up to date Mel Gorman
2015-05-20 12:50   ` Mel Gorman
2015-05-20 14:03   ` Michal Hocko
2015-05-20 14:03     ` Michal Hocko
     [not found]     ` <20150520140353.GC28678-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2015-05-20 14:18       ` Michal Hocko
2015-05-20 14:18         ` Michal Hocko
2015-05-20 14:18         ` Michal Hocko
2015-05-20 15:29   ` Johannes Weiner
2015-05-20 15:29     ` Johannes Weiner
     [not found]     ` <20150520152923.GA2874-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2015-05-20 16:15       ` Mel Gorman
2015-05-20 16:15         ` Mel Gorman
2015-05-20 16:15         ` Mel Gorman
2015-05-20 12:50 ` [PATCH 2/2] mm, memcg: Optionally disable memcg by default using Kconfig Mel Gorman
2015-05-20 12:50   ` Mel Gorman
2015-05-20 13:47   ` Davidlohr Bueso
2015-05-20 13:47     ` Davidlohr Bueso
2015-05-20 14:12     ` Michal Hocko
2015-05-20 14:12       ` Michal Hocko
2015-05-20 14:13     ` Mel Gorman
2015-05-20 14:13       ` Mel Gorman
     [not found]   ` <1432126245-10908-3-git-send-email-mgorman-l3A5Bk7waGM@public.gmane.org>
2015-05-20 16:24     ` Johannes Weiner [this message]
2015-05-20 16:24       ` Johannes Weiner
2015-05-20 16:24       ` Johannes Weiner
     [not found]       ` <20150520162421.GB2874-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2015-05-20 16:44         ` Mel Gorman
2015-05-20 16:44           ` Mel Gorman
2015-05-20 16:44           ` Mel Gorman

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=20150520162421.GB2874@cmpxchg.org \
    --to=hannes-druugvl0lcnafugrpc6u6w@public.gmane.org \
    --cc=akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
    --cc=cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org \
    --cc=mgorman-l3A5Bk7waGM@public.gmane.org \
    --cc=mhocko-AlSwsSmVLrQ@public.gmane.org \
    --cc=tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    /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 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.