All of lore.kernel.org
 help / color / mirror / Atom feed
From: Glauber Costa <glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
To: Kamezawa Hiroyuki
	<kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
Cc: linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org,
	cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	Andrew Morton
	<akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>,
	Michal Hocko <mhocko-AlSwsSmVLrQ@public.gmane.org>,
	handai.szj-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
	anton.vorontsov-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org,
	Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>,
	Mel Gorman <mgorman-l3A5Bk7waGM@public.gmane.org>
Subject: Re: [PATCH v2 4/5] memcg: do not call page_cgroup_init at system_boot
Date: Wed, 6 Mar 2013 12:22:39 +0400	[thread overview]
Message-ID: <5136FCCF.6090003@parallels.com> (raw)
In-Reply-To: <513696C1.3090301-+CUm20s59erQFUHtdCDX3A@public.gmane.org>

On 03/06/2013 05:07 AM, Kamezawa Hiroyuki wrote:
> (2013/03/05 22:10), Glauber Costa wrote:
>> If we are not using memcg, there is no reason why we should allocate
>> this structure, that will be a memory waste at best. We can do better
>> at least in the sparsemem case, and allocate it when the first cgroup
>> is requested. It should now not panic on failure, and we have to handle
>> this right.
>>
>> flatmem case is a bit more complicated, so that one is left out for
>> the moment.
>>
>> Signed-off-by: Glauber Costa <glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
>> CC: Michal Hocko <mhocko-AlSwsSmVLrQ@public.gmane.org>
>> CC: Kamezawa Hiroyuki <kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
>> CC: Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
>> CC: Mel Gorman <mgorman-l3A5Bk7waGM@public.gmane.org>
>> CC: Andrew Morton <akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
>> ---
>>   include/linux/page_cgroup.h |  28 +++++----
>>   init/main.c                 |   2 -
>>   mm/memcontrol.c             |   3 +-
>>   mm/page_cgroup.c            | 150 ++++++++++++++++++++++++--------------------
>>   4 files changed, 99 insertions(+), 84 deletions(-)
> 
> This patch seems a complicated mixture of clean-up and what-you-really-want.
> 
I swear it is all what-I-really-want, any cleanups are non-intentional!

>> -#if !defined(CONFIG_SPARSEMEM)
>> +static void *alloc_page_cgroup(size_t size, int nid)
>> +{
>> +	gfp_t flags = GFP_KERNEL | __GFP_ZERO | __GFP_NOWARN;
>> +	void *addr = NULL;
>> +
>> +	addr = alloc_pages_exact_nid(nid, size, flags);
>> +	if (addr) {
>> +		kmemleak_alloc(addr, size, 1, flags);
>> +		return addr;
>> +	}
> 
> As far as I remember, this function was written for SPARSEMEM.
> 
> How big this "size" will be with FLATMEM/DISCONTIGMEM ?
> if 16GB, 16 * 1024 * 1024 * 1024 / 4096 * 16 = 64MB. 
> 
> What happens if order > MAX_ORDER is passed to alloc_pages()...no warning ?
> 
> How about using vmalloc always if not SPARSEMEM ?

I don't oppose.

>>   
>> -void __meminit pgdat_page_cgroup_init(struct pglist_data *pgdat)
>> +static void free_page_cgroup(void *addr)
>> +{
>> +	if (is_vmalloc_addr(addr)) {
>> +		vfree(addr);
>> +	} else {
>> +		struct page *page = virt_to_page(addr);
>> +		int nid = page_to_nid(page);
>> +		BUG_ON(PageReserved(page));
> 
> This BUG_ON() can be removed.
> 

You are right, although it is still a bug =)

>> +		free_pages_exact(addr, page_cgroup_table_size(nid));
>> +	}
>> +}
>> +
>> +static void page_cgroup_msg(void)
>> +{
>> +	printk(KERN_INFO "allocated %ld bytes of page_cgroup\n", total_usage);
>> +	printk(KERN_INFO "please try 'cgroup_disable=memory' option if you "
>> +			 "don't want memory cgroups.\nAlternatively, consider "
>> +			 "deferring your memory cgroups creation.\n");
>> +}
> 
> I think this warning can be removed because it's not boot option problem
> after this patch. I guess the boot option can be obsolete....
> 

I think it is extremely useful, at least during the next couple of
releases. A lot of distributions will create memcgs for no apparent
reasons way before they are used (if used at all), as a placeholder only.

This can at least tell them that there is a way to stop paying a memory
penalty (together with the actual memory footprint)

WARNING: multiple messages have this Message-ID (diff)
From: Glauber Costa <glommer@parallels.com>
To: Kamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: linux-mm@kvack.org, cgroups@vger.kernel.org,
	Tejun Heo <tj@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Michal Hocko <mhocko@suse.cz>,
	handai.szj@gmail.com, anton.vorontsov@linaro.org,
	Johannes Weiner <hannes@cmpxchg.org>,
	Mel Gorman <mgorman@suse.de>
Subject: Re: [PATCH v2 4/5] memcg: do not call page_cgroup_init at system_boot
Date: Wed, 6 Mar 2013 12:22:39 +0400	[thread overview]
Message-ID: <5136FCCF.6090003@parallels.com> (raw)
In-Reply-To: <513696C1.3090301@jp.fujitsu.com>

On 03/06/2013 05:07 AM, Kamezawa Hiroyuki wrote:
> (2013/03/05 22:10), Glauber Costa wrote:
>> If we are not using memcg, there is no reason why we should allocate
>> this structure, that will be a memory waste at best. We can do better
>> at least in the sparsemem case, and allocate it when the first cgroup
>> is requested. It should now not panic on failure, and we have to handle
>> this right.
>>
>> flatmem case is a bit more complicated, so that one is left out for
>> the moment.
>>
>> Signed-off-by: Glauber Costa <glommer@parallels.com>
>> CC: Michal Hocko <mhocko@suse.cz>
>> CC: Kamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
>> CC: Johannes Weiner <hannes@cmpxchg.org>
>> CC: Mel Gorman <mgorman@suse.de>
>> CC: Andrew Morton <akpm@linux-foundation.org>
>> ---
>>   include/linux/page_cgroup.h |  28 +++++----
>>   init/main.c                 |   2 -
>>   mm/memcontrol.c             |   3 +-
>>   mm/page_cgroup.c            | 150 ++++++++++++++++++++++++--------------------
>>   4 files changed, 99 insertions(+), 84 deletions(-)
> 
> This patch seems a complicated mixture of clean-up and what-you-really-want.
> 
I swear it is all what-I-really-want, any cleanups are non-intentional!

>> -#if !defined(CONFIG_SPARSEMEM)
>> +static void *alloc_page_cgroup(size_t size, int nid)
>> +{
>> +	gfp_t flags = GFP_KERNEL | __GFP_ZERO | __GFP_NOWARN;
>> +	void *addr = NULL;
>> +
>> +	addr = alloc_pages_exact_nid(nid, size, flags);
>> +	if (addr) {
>> +		kmemleak_alloc(addr, size, 1, flags);
>> +		return addr;
>> +	}
> 
> As far as I remember, this function was written for SPARSEMEM.
> 
> How big this "size" will be with FLATMEM/DISCONTIGMEM ?
> if 16GB, 16 * 1024 * 1024 * 1024 / 4096 * 16 = 64MB. 
> 
> What happens if order > MAX_ORDER is passed to alloc_pages()...no warning ?
> 
> How about using vmalloc always if not SPARSEMEM ?

I don't oppose.

>>   
>> -void __meminit pgdat_page_cgroup_init(struct pglist_data *pgdat)
>> +static void free_page_cgroup(void *addr)
>> +{
>> +	if (is_vmalloc_addr(addr)) {
>> +		vfree(addr);
>> +	} else {
>> +		struct page *page = virt_to_page(addr);
>> +		int nid = page_to_nid(page);
>> +		BUG_ON(PageReserved(page));
> 
> This BUG_ON() can be removed.
> 

You are right, although it is still a bug =)

>> +		free_pages_exact(addr, page_cgroup_table_size(nid));
>> +	}
>> +}
>> +
>> +static void page_cgroup_msg(void)
>> +{
>> +	printk(KERN_INFO "allocated %ld bytes of page_cgroup\n", total_usage);
>> +	printk(KERN_INFO "please try 'cgroup_disable=memory' option if you "
>> +			 "don't want memory cgroups.\nAlternatively, consider "
>> +			 "deferring your memory cgroups creation.\n");
>> +}
> 
> I think this warning can be removed because it's not boot option problem
> after this patch. I guess the boot option can be obsolete....
> 

I think it is extremely useful, at least during the next couple of
releases. A lot of distributions will create memcgs for no apparent
reasons way before they are used (if used at all), as a placeholder only.

This can at least tell them that there is a way to stop paying a memory
penalty (together with the actual memory footprint)

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

  parent reply	other threads:[~2013-03-06  8:22 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-05 13:10 [PATCH v2 0/5] bypass root memcg charges if no memcgs are possible Glauber Costa
2013-03-05 13:10 ` Glauber Costa
     [not found] ` <1362489058-3455-1-git-send-email-glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-03-05 13:10   ` [PATCH v2 1/5] memcg: make nocpu_base available for non hotplug Glauber Costa
2013-03-05 13:10     ` Glauber Costa
     [not found]     ` <1362489058-3455-2-git-send-email-glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-03-06  0:04       ` Kamezawa Hiroyuki
2013-03-06  0:04         ` Kamezawa Hiroyuki
2013-03-19 11:07     ` Michal Hocko
2013-03-05 13:10   ` [PATCH v2 2/5] memcg: provide root figures from system totals Glauber Costa
2013-03-05 13:10     ` Glauber Costa
2013-03-06  0:27     ` Kamezawa Hiroyuki
     [not found]       ` <51368D80.20701-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2013-03-06  8:30         ` Glauber Costa
2013-03-06  8:30           ` Glauber Costa
     [not found]           ` <5136FEC2.2050004-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-03-06 10:45             ` Kamezawa Hiroyuki
2013-03-06 10:45               ` Kamezawa Hiroyuki
     [not found]               ` <51371E4A.7090807-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2013-03-06 10:52                 ` Glauber Costa
2013-03-06 10:52                   ` Glauber Costa
     [not found]                   ` <51371FEF.3020507-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-03-06 10:59                     ` Kamezawa Hiroyuki
2013-03-06 10:59                       ` Kamezawa Hiroyuki
     [not found]                       ` <513721A5.6080401-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2013-03-13  6:58                         ` Sha Zhengju
2013-03-13  6:58                           ` Sha Zhengju
     [not found]                           ` <CAFj3OHWm_GjLFwNEE=D69DR-YSF25AZvKTLHpyHq7aYDi12b0g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-03-13  9:15                             ` Kamezawa Hiroyuki
2013-03-13  9:15                               ` Kamezawa Hiroyuki
2013-03-13  9:59                               ` Sha Zhengju
2013-03-14  0:03                                 ` Kamezawa Hiroyuki
2013-03-14  0:03                                   ` Kamezawa Hiroyuki
2013-03-06 10:50             ` Kamezawa Hiroyuki
2013-03-06 10:50               ` Kamezawa Hiroyuki
     [not found]     ` <1362489058-3455-3-git-send-email-glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-03-19 12:46       ` Michal Hocko
2013-03-19 12:46         ` Michal Hocko
     [not found]         ` <20130319124650.GE7869-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2013-03-19 12:55           ` Michal Hocko
2013-03-19 12:55             ` Michal Hocko
2013-03-20  7:03             ` Glauber Costa
     [not found]               ` <51495F35.9040302-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-03-20  8:03                 ` Michal Hocko
2013-03-20  8:03                   ` Michal Hocko
2013-03-20  8:08                   ` Glauber Costa
     [not found]                     ` <51496E71.5010707-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-03-20  8:18                       ` Michal Hocko
2013-03-20  8:18                         ` Michal Hocko
2013-03-20  8:34                         ` Glauber Costa
2013-03-20  8:58                           ` Michal Hocko
2013-03-20  9:30                             ` Glauber Costa
     [not found]                               ` <514981C3.8070304-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-03-21  6:08                                 ` Kamezawa Hiroyuki
2013-03-21  6:08                                   ` Kamezawa Hiroyuki
2013-03-20 16:40                       ` Anton Vorontsov
2013-03-20 16:40                         ` Anton Vorontsov
2013-03-20  7:04         ` Glauber Costa
2013-03-05 13:10   ` [PATCH v2 3/5] memcg: make it suck faster Glauber Costa
2013-03-05 13:10     ` Glauber Costa
     [not found]     ` <1362489058-3455-4-git-send-email-glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-03-06  0:46       ` Kamezawa Hiroyuki
2013-03-06  0:46         ` Kamezawa Hiroyuki
2013-03-06  8:38         ` Glauber Costa
     [not found]           ` <5137007E.7030004-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-03-06 10:54             ` Kamezawa Hiroyuki
2013-03-06 10:54               ` Kamezawa Hiroyuki
2013-03-13  8:08       ` Sha Zhengju
2013-03-13  8:08         ` Sha Zhengju
     [not found]         ` <CAFj3OHU6f3o5GmbFyUsqtSWqHruSS4Yyodx=s=Vh8mO7GfTE8w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-03-20  7:13           ` Glauber Costa
2013-03-20  7:13             ` Glauber Costa
2013-03-19 13:58       ` Michal Hocko
2013-03-19 13:58         ` Michal Hocko
2013-03-20  7:00         ` Glauber Costa
     [not found]           ` <51495E73.8090409-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-03-20  8:13             ` Michal Hocko
2013-03-20  8:13               ` Michal Hocko
2013-03-05 13:10   ` [PATCH v2 4/5] memcg: do not call page_cgroup_init at system_boot Glauber Costa
2013-03-05 13:10     ` Glauber Costa
     [not found]     ` <1362489058-3455-5-git-send-email-glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-03-06  1:07       ` Kamezawa Hiroyuki
2013-03-06  1:07         ` Kamezawa Hiroyuki
     [not found]         ` <513696C1.3090301-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2013-03-06  8:22           ` Glauber Costa [this message]
2013-03-06  8:22             ` Glauber Costa
2013-03-19 14:06     ` Michal Hocko
2013-03-05 13:10   ` [PATCH v2 5/5] memcg: do not walk all the way to the root for memcg Glauber Costa
2013-03-05 13:10     ` Glauber Costa
     [not found]     ` <1362489058-3455-6-git-send-email-glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-03-06  1:08       ` Kamezawa Hiroyuki
2013-03-06  1:08         ` Kamezawa Hiroyuki

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=5136FCCF.6090003@parallels.com \
    --to=glommer-bzqdu9zft3wakbo8gow8eq@public.gmane.org \
    --cc=akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
    --cc=anton.vorontsov-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=handai.szj-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org \
    --cc=kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@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.