linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: Mel Gorman <mgorman@suse.de>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Minchan Kim <minchan@kernel.org>, Dave Hansen <dave@sr71.net>,
	Michal Nazarewicz <mina86@mina86.com>,
	Jungsoo Son <jungsoo.son@lge.com>, Ingo Molnar <mingo@redhat.com>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 6/7] mm/page_owner: keep track of page owners
Date: Fri, 21 Nov 2014 15:38:32 -0800	[thread overview]
Message-ID: <20141121153832.a9bd6f8b765608cd1c1959a3@linux-foundation.org> (raw)
In-Reply-To: <1416557646-21755-7-git-send-email-iamjoonsoo.kim@lge.com>

On Fri, 21 Nov 2014 17:14:05 +0900 Joonsoo Kim <iamjoonsoo.kim@lge.com> wrote:

> This is the page owner tracking code which is introduced
> so far ago. It is resident on Andrew's tree, though, nobody
> tried to upstream so it remain as is. Our company uses this feature
> actively to debug memory leak or to find a memory hogger so
> I decide to upstream this feature.
> 
> This functionality help us to know who allocates the page.
> When allocating a page, we store some information about
> allocation in extra memory. Later, if we need to know
> status of all pages, we can get and analyze it from this stored
> information.
> 
> In previous version of this feature, extra memory is statically defined
> in struct page, but, in this version, extra memory is allocated outside
> of struct page. It enables us to turn on/off this feature at boottime
> without considerable memory waste.
> 
> Although we already have tracepoint for tracing page allocation/free,
> using it to analyze page owner is rather complex. We need to enlarge
> the trace buffer for preventing overlapping until userspace program
> launched. And, launched program continually dump out the trace buffer
> for later analysis and it would change system behaviour with more
> possibility rather than just keeping it in memory, so bad for debug.
> 
> Moreover, we can use page_owner feature further for various purposes.
> For example, we can use it for fragmentation statistics implemented in
> this patch. And, I also plan to implement some CMA failure debugging
> feature using this interface.
> 
> I'd like to give the credit for all developers contributed this feature,
> but, it's not easy because I don't know exact history. Sorry about that.
> Below is people who has "Signed-off-by" in the patches in Andrew's tree.
> 
> ...
>
> --- a/Documentation/kernel-parameters.txt
> +++ b/Documentation/kernel-parameters.txt
> @@ -884,6 +884,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
>  			MTRR settings.  This parameter disables that behavior,
>  			possibly causing your machine to run very slowly.
>  
> +	disable_page_owner
> +			[KNL] Disable to store the information who requests
> +			the page.

How about "Disable storage of the information about who allocated each
page".

It seems odd that we have a disable flag.  Wouldn't it be less
surprising to disable it by default and only enable if the boot option
is provided?

What is the overhead of page_owner if it is runtime-disabled, btw? 
Will it be feasible for lots of people to just leave it enabled in
config and to only turn it on when they want to use it?  That would be
nice.  Please add a paragraph on this point to the changelog and the
yet-to-be-written documentation.


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

  reply	other threads:[~2014-11-21 23:38 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-21  8:13 [PATCH v2 0/7] Resurrect and use struct page extension for some debugging features Joonsoo Kim
2014-11-21  8:14 ` [PATCH v2 1/7] mm/page_ext: resurrect struct page extending code for debugging Joonsoo Kim
2014-11-21 23:37   ` Andrew Morton
2014-11-24  2:50     ` Joonsoo Kim
2014-11-21  8:14 ` [PATCH v2 2/7] mm/debug-pagealloc: prepare boottime configurable on/off Joonsoo Kim
2014-11-21  8:14 ` [PATCH v2 3/7] mm/debug-pagealloc: make debug-pagealloc boottime configurable Joonsoo Kim
2014-11-21  8:14 ` [PATCH v2 4/7] mm/nommu: use alloc_pages_exact() rather than it's own implementation Joonsoo Kim
2014-11-21  8:14 ` [PATCH v2 5/7] stacktrace: introduce snprint_stack_trace for buffer output Joonsoo Kim
2014-11-21 23:37   ` Andrew Morton
2014-11-24  2:57     ` Joonsoo Kim
2014-11-21  8:14 ` [PATCH v2 6/7] mm/page_owner: keep track of page owners Joonsoo Kim
2014-11-21 23:38   ` Andrew Morton [this message]
2014-11-24  3:09     ` Joonsoo Kim
2014-11-21  8:14 ` [PATCH v2 7/7] mm/page_owner: correct owner information for early allocated pages Joonsoo Kim
2014-11-21 23:38   ` Andrew Morton
2014-11-24  3:10     ` Joonsoo Kim

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=20141121153832.a9bd6f8b765608cd1c1959a3@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=dave@sr71.net \
    --cc=hannes@cmpxchg.org \
    --cc=iamjoonsoo.kim@lge.com \
    --cc=jungsoo.son@lge.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mgorman@suse.de \
    --cc=mina86@mina86.com \
    --cc=minchan@kernel.org \
    --cc=mingo@redhat.com \
    /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