From: Mel Gorman <mel@csn.ul.ie>
To: Leonid Moiseichuk <leonid.moiseichuk@nokia.com>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
cesarb@cesarb.net, kamezawa.hiroyu@jp.fujitsu.com,
emunson@mgebm.net, penberg@kernel.org, aarcange@redhat.com,
riel@redhat.com, rientjes@google.com, dima@android.com,
gregkh@suse.de, rebecca@android.com, san@google.com,
akpm@linux-foundation.org, vesa.jaaskelainen@nokia.com
Subject: Re: [PATCH 3.2.0-rc1 2/3] MM hook for page allocation and release
Date: Thu, 5 Jan 2012 15:22:53 +0000 [thread overview]
Message-ID: <20120105152253.GB27881@csn.ul.ie> (raw)
In-Reply-To: <e78b4ac9d3d51ac16180114c08733e4bf62ec65e.1325696593.git.leonid.moiseichuk@nokia.com>
On Wed, Jan 04, 2012 at 07:21:55PM +0200, Leonid Moiseichuk wrote:
> That is required by Used Memory Meter (UMM) pseudo-device
> to track memory utilization in system. It is expected that
> hook MUST be very light to prevent performance impact
> on the hot allocation path. Accuracy of number managed pages
> does not expected to be absolute but fact of allocation or
> deallocation must be registered.
>
> Signed-off-by: Leonid Moiseichuk <leonid.moiseichuk@nokia.com>
> ---
> include/linux/mm.h | 15 +++++++++++++++
> mm/Kconfig | 8 ++++++++
> mm/page_alloc.c | 31 +++++++++++++++++++++++++++++++
> 3 files changed, 54 insertions(+), 0 deletions(-)
>
> diff --git a/include/linux/mm.h b/include/linux/mm.h
> index 3dc3a8c..d133f73 100644
> --- a/include/linux/mm.h
> +++ b/include/linux/mm.h
> @@ -1618,6 +1618,21 @@ extern int soft_offline_page(struct page *page, int flags);
>
> extern void dump_page(struct page *page);
>
> +#ifdef CONFIG_MM_ALLOC_FREE_HOOK
> +/*
> + * Hook function type which called when some pages allocated or released.
> + * Value of nr_pages is positive for post-allocation calls and negative
> + * after free.
> + */
> +typedef void (*mm_alloc_free_hook_t)(int nr_pages);
> +
> +/*
I'm going to chime in and say that hooks like this into the page
allocator are a no-go unless there really is absolutely no other option.
There is too much scope for abuse.
Even if they were not, this takes no account of the zone or node
we are allocating from making it useful only in the case where the
system had a single node and zone. This applies to mobile devices
but not a lot of other systems.
It also would have very poor information about memory pressure which
is likely to be far more interesting and for that, awareness of what
is happening in page reclaim is required.
I haven't looked at the alternatives but there has been some vague
discussion recently on reviving the concept of a low memory notifier,
somehow making the existing memcg oom notifier global or maybe the
andro lowmem killer can be adapted to your needs.
> @@ -2298,6 +2322,10 @@ __alloc_pages_nodemask(gfp_t gfp_mask, unsigned int order,
> put_mems_allowed();
>
> trace_mm_page_alloc(page, order, gfp_mask, migratetype);
> +#ifdef CONFIG_MM_ALLOC_FREE_HOOK
> + call_alloc_free_hook(1 << order);
> +#endif
> +
> return page;
> }
you are calling a free hook there in the alloc path. Seems odd.
This is just a side-note but as this information is meant to be
consumed by userspace you have the option of hooking into the
mm_page_alloc tracepoint. You get the same information about how
many pages are allocated or freed. I accept that it will probably be
a bit slower but on the plus side it'll be backwards compatible and
you don't need a kernel patch for it.
--
Mel Gorman
SUSE Labs
--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2012-01-05 15:22 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-04 17:21 [PATCH 3.2.0-rc1 0/3] Used Memory Meter pseudo-device and related changes in MM Leonid Moiseichuk
2012-01-04 17:21 ` [PATCH 3.2.0-rc1 1/3] Making si_swapinfo exportable Leonid Moiseichuk
2012-01-04 17:21 ` [PATCH 3.2.0-rc1 2/3] MM hook for page allocation and release Leonid Moiseichuk
2012-01-04 20:40 ` Pekka Enberg
2012-01-05 6:59 ` KAMEZAWA Hiroyuki
2012-01-05 11:26 ` leonid.moiseichuk
2012-01-05 12:49 ` Pekka Enberg
2012-01-05 15:05 ` Rik van Riel
2012-01-05 15:17 ` leonid.moiseichuk
2012-01-05 15:22 ` Mel Gorman [this message]
2012-01-04 17:21 ` [PATCH 3.2.0-rc1 3/3] Used Memory Meter pseudo-device module Leonid Moiseichuk
2012-01-04 19:55 ` Greg KH
2012-01-09 9:58 ` leonid.moiseichuk
2012-01-09 10:09 ` David Rientjes
2012-01-09 10:19 ` leonid.moiseichuk
2012-01-09 20:55 ` David Rientjes
2012-01-11 12:46 ` leonid.moiseichuk
2012-01-11 21:44 ` David Rientjes
2012-01-12 8:32 ` leonid.moiseichuk
2012-01-12 20:54 ` David Rientjes
2012-01-13 9:34 ` leonid.moiseichuk
2012-01-13 11:06 ` David Rientjes
2012-01-13 11:51 ` leonid.moiseichuk
2012-01-13 21:35 ` David Rientjes
2012-01-04 19:56 ` [PATCH 3.2.0-rc1 0/3] Used Memory Meter pseudo-device and related changes in MM Greg KH
2012-01-04 20:17 ` Rik van Riel
2012-01-04 20:42 ` Pekka Enberg
2012-01-05 23:01 ` David Rientjes
2012-01-05 12:22 ` leonid.moiseichuk
2012-01-05 11:47 ` leonid.moiseichuk
2012-01-05 12:40 ` Pekka Enberg
2012-01-05 13:02 ` leonid.moiseichuk
2012-01-05 14:57 ` Greg KH
2012-01-05 16:13 ` leonid.moiseichuk
2012-01-05 23:10 ` David Rientjes
2012-01-09 8:27 ` leonid.moiseichuk
2012-01-06 0:26 ` KOSAKI Motohiro
2012-01-09 8:49 ` leonid.moiseichuk
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=20120105152253.GB27881@csn.ul.ie \
--to=mel@csn.ul.ie \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=cesarb@cesarb.net \
--cc=dima@android.com \
--cc=emunson@mgebm.net \
--cc=gregkh@suse.de \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=leonid.moiseichuk@nokia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=penberg@kernel.org \
--cc=rebecca@android.com \
--cc=riel@redhat.com \
--cc=rientjes@google.com \
--cc=san@google.com \
--cc=vesa.jaaskelainen@nokia.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;
as well as URLs for NNTP newsgroup(s).