From: Minchan Kim <minchan@kernel.org>
To: Zhang Mingjun <zhang.mingjun@linaro.org>
Cc: Marek Szyprowski <m.szyprowski@samsung.com>,
akpm@linux-foundation.org, Mel Gorman <mgorman@suse.de>,
Haojian Zhuang <haojian.zhuang@linaro.org>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
Mingjun Zhang <troy.zhangmingjun@linaro.org>,
KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Subject: Re: [PATCH] mm: cma: free cma page to buddy instead of being cpu hot page
Date: Tue, 29 Oct 2013 16:25:11 +0900 [thread overview]
Message-ID: <20131029072511.GA6030@bbox> (raw)
In-Reply-To: <CAGT3LeqEzMKeq5PYz+Dv-rCBsTuUAtttyvYZu4UYWsAkUn8urQ@mail.gmail.com>
On Tue, Oct 29, 2013 at 03:00:09PM +0800, Zhang Mingjun wrote:
> On Tue, Oct 29, 2013 at 12:54 PM, Minchan Kim <minchan@kernel.org> wrote:
>
> > Hello,
> >
> > 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.
> >
> > You are saying about the overhead but I'm not sure how much it is
> > because it wouldn't be frequent. Although it's frequent, migration is
> > already slow path and CMA migration is worse so I really wonder how much
> > pain is and how much this patch improve.
> >
> > Having said that, it makes CMA allocation policy consistent which
> > is that CMA migration type is last fallback to minimize number of migration
> > and code peice you are adding is already low hit path so that I think
> > it has no problem.
> >
> problem is when free_contig_range frees cma pages, page's migration type is
> MIGRATE_CMA!
> I don't know why free_contig_range free pages one by one, but in the end it
> calls free_hot_cold_page,
> so some of these MIGRATE_CMA pages will be used as MIGRATE_MOVEABLE, this
> break the CMA
> allocation policy and it's not the low hit path, it's really the hot path,
> in fact each time free_contig_range calls
> some of these CMA pages will stay on this pcp list.
> when filesytem needs a pagecache or page fault exception which alloc one
> page using alloc_pages(MOVABLE, 0)
> it will get the page from this pcp list, breaking the CMA fallback rules,
> that is CMA pages in pcp list using as
> page cache or annoymous page very easily.
It seems you misunderstood me. My English was poor?
I already said that I agree with you.
Your patch has no impact with hot path and makes CMA allocation policy
consistent so that there is no objection.
>
> > >
> > > 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))
> >
> > The concern is likely/unlikely usage is proper in this code peice.
> > If we don't use memory isolation, the code path is used for only
> > MIGRATE_RESERVE which is very rare allocation in normal workload.
> >
> > Even, in memory isolation environement, I'm not sure how many
> > CMA/HOTPLUG is used compared to normal alloc/free.
> > So, I think below is more proper?
> >
> > if (unlikely(migratetype >= MIGRATE_PCPTYPES)) {
> > if (is_migrate_isolate(migratetype) || is_migrate_cma(migratetype))
> >
> > if CMA is enabled and alloc/free frequently, it will more likely
> migratetype >= MIGRATE_PCPTYPES
Until now, I didn't notice there is such workload. Do you have such real workload?
If so, we should change it with following as?
if (migratetype >= MIGRATE_PCPTYPES) {
if (is_migrate_cma(migratetype) || unlikely(is_migrate_isolate(migratetype)))
Because assumption is you insist that there is lots of alloc/free for CMA.
But since we have had unlikely on memory-hotplug check, it would be less than CMA.
>
> I know it's an another topic but I'd like to disucss it in this time because
> > we will forget such trivial thing later, again.
> >
> > }
> >
> > > free_one_page(zone, page, 0, migratetype);
> > > goto out;
> > > }
> > > --
> > > 1.7.9.5
> > >
> > > --
> > > 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
> >
--
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: Zhang Mingjun <zhang.mingjun@linaro.org>
Cc: Marek Szyprowski <m.szyprowski@samsung.com>,
akpm@linux-foundation.org, Mel Gorman <mgorman@suse.de>,
Haojian Zhuang <haojian.zhuang@linaro.org>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
Mingjun Zhang <troy.zhangmingjun@linaro.org>,
KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Subject: Re: [PATCH] mm: cma: free cma page to buddy instead of being cpu hot page
Date: Tue, 29 Oct 2013 16:25:11 +0900 [thread overview]
Message-ID: <20131029072511.GA6030@bbox> (raw)
In-Reply-To: <CAGT3LeqEzMKeq5PYz+Dv-rCBsTuUAtttyvYZu4UYWsAkUn8urQ@mail.gmail.com>
On Tue, Oct 29, 2013 at 03:00:09PM +0800, Zhang Mingjun wrote:
> On Tue, Oct 29, 2013 at 12:54 PM, Minchan Kim <minchan@kernel.org> wrote:
>
> > Hello,
> >
> > 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.
> >
> > You are saying about the overhead but I'm not sure how much it is
> > because it wouldn't be frequent. Although it's frequent, migration is
> > already slow path and CMA migration is worse so I really wonder how much
> > pain is and how much this patch improve.
> >
> > Having said that, it makes CMA allocation policy consistent which
> > is that CMA migration type is last fallback to minimize number of migration
> > and code peice you are adding is already low hit path so that I think
> > it has no problem.
> >
> problem is when free_contig_range frees cma pages, page's migration type is
> MIGRATE_CMA!
> I don't know why free_contig_range free pages one by one, but in the end it
> calls free_hot_cold_page,
> so some of these MIGRATE_CMA pages will be used as MIGRATE_MOVEABLE, this
> break the CMA
> allocation policy and it's not the low hit path, it's really the hot path,
> in fact each time free_contig_range calls
> some of these CMA pages will stay on this pcp list.
> when filesytem needs a pagecache or page fault exception which alloc one
> page using alloc_pages(MOVABLE, 0)
> it will get the page from this pcp list, breaking the CMA fallback rules,
> that is CMA pages in pcp list using as
> page cache or annoymous page very easily.
It seems you misunderstood me. My English was poor?
I already said that I agree with you.
Your patch has no impact with hot path and makes CMA allocation policy
consistent so that there is no objection.
>
> > >
> > > 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))
> >
> > The concern is likely/unlikely usage is proper in this code peice.
> > If we don't use memory isolation, the code path is used for only
> > MIGRATE_RESERVE which is very rare allocation in normal workload.
> >
> > Even, in memory isolation environement, I'm not sure how many
> > CMA/HOTPLUG is used compared to normal alloc/free.
> > So, I think below is more proper?
> >
> > if (unlikely(migratetype >= MIGRATE_PCPTYPES)) {
> > if (is_migrate_isolate(migratetype) || is_migrate_cma(migratetype))
> >
> > if CMA is enabled and alloc/free frequently, it will more likely
> migratetype >= MIGRATE_PCPTYPES
Until now, I didn't notice there is such workload. Do you have such real workload?
If so, we should change it with following as?
if (migratetype >= MIGRATE_PCPTYPES) {
if (is_migrate_cma(migratetype) || unlikely(is_migrate_isolate(migratetype)))
Because assumption is you insist that there is lots of alloc/free for CMA.
But since we have had unlikely on memory-hotplug check, it would be less than CMA.
>
> I know it's an another topic but I'd like to disucss it in this time because
> > we will forget such trivial thing later, again.
> >
> > }
> >
> > > free_one_page(zone, page, 0, migratetype);
> > > goto out;
> > > }
> > > --
> > > 1.7.9.5
> > >
> > > --
> > > 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
> >
--
Kind regards,
Minchan Kim
next prev parent reply other threads:[~2013-10-29 7:25 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 [this message]
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
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=20131029072511.GA6030@bbox \
--to=minchan@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=haojian.zhuang@linaro.org \
--cc=kosaki.motohiro@jp.fujitsu.com \
--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.