From: Minchan Kim <minchan@kernel.org>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Mel Gorman <mgorman@suse.de>,
zhang.mingjun@linaro.org, m.szyprowski@samsung.com,
haojian.zhuang@linaro.org, linux-mm@kvack.org,
linux-kernel@vger.kernel.org,
Mingjun Zhang <troy.zhangmingjun@linaro.org>
Subject: Re: [PATCH] mm: cma: free cma page to buddy instead of being cpu hot page
Date: Wed, 6 Nov 2013 15:43:02 +0900 [thread overview]
Message-ID: <20131106064302.GC30958@bbox> (raw)
In-Reply-To: <20131105134448.7677d6febbfff4721373be4b@linux-foundation.org>
Hello Andrew,
On Tue, Nov 05, 2013 at 01:44:48PM -0800, Andrew Morton wrote:
> On Tue, 29 Oct 2013 09:33:23 +0000 Mel Gorman <mgorman@suse.de> wrote:
>
> > On Mon, Oct 28, 2013 at 07:42:49PM +0800, zhang.mingjun@linaro.org wrote:
> > > From: Mingjun Zhang <troy.zhangmingjun@linaro.org>
> > >
> > > free_contig_range frees cma pages one by one and MIGRATE_CMA pages will be
> > > used as MIGRATE_MOVEABLE pages in the pcp list, it causes unnecessary
> > > migration action when these pages reused by CMA.
> > >
> > > Signed-off-by: Mingjun Zhang <troy.zhangmingjun@linaro.org>
> > > ---
> > > mm/page_alloc.c | 3 ++-
> > > 1 file changed, 2 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> > > index 0ee638f..84b9d84 100644
> > > --- a/mm/page_alloc.c
> > > +++ b/mm/page_alloc.c
> > > @@ -1362,7 +1362,8 @@ void free_hot_cold_page(struct page *page, int cold)
> > > * excessively into the page allocator
> > > */
> > > if (migratetype >= MIGRATE_PCPTYPES) {
> > > - if (unlikely(is_migrate_isolate(migratetype))) {
> > > + if (unlikely(is_migrate_isolate(migratetype))
> > > + || is_migrate_cma(migratetype))
> > > free_one_page(zone, page, 0, migratetype);
> > > goto out;
> >
> > This slightly impacts the page allocator free path for a marginal gain
> > on CMA which are relatively rare allocations. There is no obvious
> > benefit to this patch as I expect CMA allocations to flush the PCP lists
> > when a range of pages have been isolated and migrated. Is there any
> > measurable benefit to this patch?
>
> The added overhead is pretty small - just a comparison of a local with
> a constant. And that cost is not incurred for MIGRATE_UNMOVABLE,
> MIGRATE_RECLAIMABLE and MIGRATE_MOVABLE, which are the common cases
> (yes?).
True but bloat code might affect icache so we should be careful.
And what Mel has a concern is about zone->lock, which would be more contended.
I agree his opinion.
In addition, I think the gain is marginal because normally CMA is big range
so free_contig_range in dma release path will fill per_cpu_pages with freed pages
easily so it could drain per_cpu_pages frequently so race which steal page from
per_cpu_pages is not big, I guess.
Morever, we could change free_contig_range with batch_free_page which would
be useful for other cases if they want to free many number of pages
all at once.
The bottom line is we need *number and real scenario* for that.
If it's really needed, after merging this patch, we could enhance it with
batch_free_page so we could solve Mel's concern, too.
>
> This thread is a bit straggly and inconclusive, but it sounds to me
> that the benefit to CMA users is quite large and the cost to others is
> small, so I'm inclined to run with the original patch. Someone stop me
> if that's wrong.
I want you to stop until we see the number.
>
> (we could speed up some of the migratetype tests if the MIGRATE_foo
> constants were converted to bitfields. The above test becomes "if
> (migratetype & (MIGRATE_CMA|MIGRATE_ISOLATE))").
>
> (why is is_migrate_cma() implemented as a macro in mmzone.h while
> is_migrate_isolate() is an inline in page-isolation.h?)
Just preference?
I like inline than macro and that's why is_migrate_isolate was inline.
>
> --
> 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>
--
Kind regards,
Minchan Kim
--
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: Minchan Kim <minchan@kernel.org>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Mel Gorman <mgorman@suse.de>,
zhang.mingjun@linaro.org, m.szyprowski@samsung.com,
haojian.zhuang@linaro.org, linux-mm@kvack.org,
linux-kernel@vger.kernel.org,
Mingjun Zhang <troy.zhangmingjun@linaro.org>
Subject: Re: [PATCH] mm: cma: free cma page to buddy instead of being cpu hot page
Date: Wed, 6 Nov 2013 15:43:02 +0900 [thread overview]
Message-ID: <20131106064302.GC30958@bbox> (raw)
In-Reply-To: <20131105134448.7677d6febbfff4721373be4b@linux-foundation.org>
Hello Andrew,
On Tue, Nov 05, 2013 at 01:44:48PM -0800, Andrew Morton wrote:
> On Tue, 29 Oct 2013 09:33:23 +0000 Mel Gorman <mgorman@suse.de> wrote:
>
> > On Mon, Oct 28, 2013 at 07:42:49PM +0800, zhang.mingjun@linaro.org wrote:
> > > From: Mingjun Zhang <troy.zhangmingjun@linaro.org>
> > >
> > > free_contig_range frees cma pages one by one and MIGRATE_CMA pages will be
> > > used as MIGRATE_MOVEABLE pages in the pcp list, it causes unnecessary
> > > migration action when these pages reused by CMA.
> > >
> > > Signed-off-by: Mingjun Zhang <troy.zhangmingjun@linaro.org>
> > > ---
> > > mm/page_alloc.c | 3 ++-
> > > 1 file changed, 2 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> > > index 0ee638f..84b9d84 100644
> > > --- a/mm/page_alloc.c
> > > +++ b/mm/page_alloc.c
> > > @@ -1362,7 +1362,8 @@ void free_hot_cold_page(struct page *page, int cold)
> > > * excessively into the page allocator
> > > */
> > > if (migratetype >= MIGRATE_PCPTYPES) {
> > > - if (unlikely(is_migrate_isolate(migratetype))) {
> > > + if (unlikely(is_migrate_isolate(migratetype))
> > > + || is_migrate_cma(migratetype))
> > > free_one_page(zone, page, 0, migratetype);
> > > goto out;
> >
> > This slightly impacts the page allocator free path for a marginal gain
> > on CMA which are relatively rare allocations. There is no obvious
> > benefit to this patch as I expect CMA allocations to flush the PCP lists
> > when a range of pages have been isolated and migrated. Is there any
> > measurable benefit to this patch?
>
> The added overhead is pretty small - just a comparison of a local with
> a constant. And that cost is not incurred for MIGRATE_UNMOVABLE,
> MIGRATE_RECLAIMABLE and MIGRATE_MOVABLE, which are the common cases
> (yes?).
True but bloat code might affect icache so we should be careful.
And what Mel has a concern is about zone->lock, which would be more contended.
I agree his opinion.
In addition, I think the gain is marginal because normally CMA is big range
so free_contig_range in dma release path will fill per_cpu_pages with freed pages
easily so it could drain per_cpu_pages frequently so race which steal page from
per_cpu_pages is not big, I guess.
Morever, we could change free_contig_range with batch_free_page which would
be useful for other cases if they want to free many number of pages
all at once.
The bottom line is we need *number and real scenario* for that.
If it's really needed, after merging this patch, we could enhance it with
batch_free_page so we could solve Mel's concern, too.
>
> This thread is a bit straggly and inconclusive, but it sounds to me
> that the benefit to CMA users is quite large and the cost to others is
> small, so I'm inclined to run with the original patch. Someone stop me
> if that's wrong.
I want you to stop until we see the number.
>
> (we could speed up some of the migratetype tests if the MIGRATE_foo
> constants were converted to bitfields. The above test becomes "if
> (migratetype & (MIGRATE_CMA|MIGRATE_ISOLATE))").
>
> (why is is_migrate_cma() implemented as a macro in mmzone.h while
> is_migrate_isolate() is an inline in page-isolation.h?)
Just preference?
I like inline than macro and that's why is_migrate_isolate was inline.
>
> --
> 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>
--
Kind regards,
Minchan Kim
next prev parent reply other threads:[~2013-11-06 6:42 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-28 11:42 [PATCH] mm: cma: free cma page to buddy instead of being cpu hot page zhang.mingjun
2013-10-28 11:42 ` zhang.mingjun
2013-10-28 16:04 ` Laura Abbott
2013-10-28 16:04 ` Laura Abbott
2013-10-29 4:54 ` Minchan Kim
2013-10-29 4:54 ` Minchan Kim
2013-10-29 6:41 ` KOSAKI Motohiro
2013-10-29 6:41 ` KOSAKI Motohiro
2013-10-29 7:00 ` Zhang Mingjun
2013-10-29 7:25 ` Minchan Kim
2013-10-29 7:25 ` Minchan Kim
2013-10-29 11:17 ` Zhang Mingjun
2013-10-29 9:33 ` Mel Gorman
2013-10-29 9:33 ` Mel Gorman
2013-10-29 11:49 ` Zhang Mingjun
2013-10-29 12:27 ` Mel Gorman
2013-10-29 12:27 ` Mel Gorman
2013-10-29 15:02 ` Zhang Mingjun
2013-10-29 16:14 ` Laura Abbott
2013-10-29 16:14 ` Laura Abbott
2013-10-30 5:40 ` Minchan Kim
2013-10-30 5:40 ` Minchan Kim
2013-10-31 2:14 ` Laura Abbott
2013-10-31 2:14 ` Laura Abbott
2013-11-01 1:49 ` Minchan Kim
2013-11-01 1:49 ` Minchan Kim
2013-12-23 12:38 ` Wanpeng Li
2013-10-30 2:55 ` Minchan Kim
2013-10-30 2:55 ` Minchan Kim
2013-11-05 21:44 ` Andrew Morton
2013-11-05 21:44 ` Andrew Morton
2013-11-06 6:43 ` Minchan Kim [this message]
2013-11-06 6:43 ` Minchan Kim
2013-11-06 23:41 ` Andrew Morton
2013-11-06 23:41 ` Andrew Morton
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=20131106064302.GC30958@bbox \
--to=minchan@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=haojian.zhuang@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=m.szyprowski@samsung.com \
--cc=mgorman@suse.de \
--cc=troy.zhangmingjun@linaro.org \
--cc=zhang.mingjun@linaro.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.