linux-pm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Joonsoo Kim <iamjoonsoo.kim@lge.com>
To: Hui Zhu <teawater@gmail.com>
Cc: Hui Zhu <zhuhui@xiaomi.com>,
	rjw@rjwysocki.net, len.brown@intel.com, pavel@ucw.cz,
	m.szyprowski@samsung.com,
	Andrew Morton <akpm@linux-foundation.org>,
	mina86@mina86.com, aneesh.kumar@linux.vnet.ibm.com,
	hannes@cmpxchg.org, Rik van Riel <riel@redhat.com>,
	mgorman@suse.de, minchan@kernel.org, nasa4836@gmail.com,
	ddstreet@ieee.org, Hugh Dickins <hughd@google.com>,
	mingo@kernel.org, rientjes@google.com,
	Peter Zijlstra <peterz@infradead.org>,
	keescook@chromium.org, atomlin@redhat.com, raistlin@linux.it,
	axboe@fb.com, Paul McKenney <paulmck@linux.vnet.ibm.com>,
	kirill.shutemov@linux.intel.com, n-horiguchi@ah.jp.nec.com,
	k.khlebnikov@samsung.com, msalter@redhat.com, deller@gmx.de,
	tangchen@cn.fujitsu.com, ben@decadent.org.uk,
	akinobu.mita@gmail.com, lauraa@codeaurora.org, vbabka@suse.cz,
	sasha.levin@oracle.com, vdavydov@parallels.com,
	suleiman@google.com, linux-kernel@vger.
Subject: Re: [PATCH 0/4] (CMA_AGGRESSIVE) Make CMA memory be more aggressive about allocation
Date: Tue, 4 Nov 2014 11:31:12 +0900	[thread overview]
Message-ID: <20141104023112.GA17804@js1304-P5Q-DELUXE> (raw)
In-Reply-To: <20141103080546.GB7052@js1304-P5Q-DELUXE>

On Mon, Nov 03, 2014 at 05:05:46PM +0900, Joonsoo Kim wrote:
> On Mon, Nov 03, 2014 at 03:28:38PM +0800, Hui Zhu wrote:
> > On Fri, Oct 24, 2014 at 1:25 PM, Joonsoo Kim <iamjoonsoo.kim@lge.com> wrote:
> > > On Thu, Oct 16, 2014 at 11:35:47AM +0800, Hui Zhu wrote:
> > >> In fallbacks of page_alloc.c, MIGRATE_CMA is the fallback of
> > >> MIGRATE_MOVABLE.
> > >> MIGRATE_MOVABLE will use MIGRATE_CMA when it doesn't have a page in
> > >> order that Linux kernel want.
> > >>
> > >> If a system that has a lot of user space program is running, for
> > >> instance, an Android board, most of memory is in MIGRATE_MOVABLE and
> > >> allocated.  Before function __rmqueue_fallback get memory from
> > >> MIGRATE_CMA, the oom_killer will kill a task to release memory when
> > >> kernel want get MIGRATE_UNMOVABLE memory because fallbacks of
> > >> MIGRATE_UNMOVABLE are MIGRATE_RECLAIMABLE and MIGRATE_MOVABLE.
> > >> This status is odd.  The MIGRATE_CMA has a lot free memory but Linux
> > >> kernel kill some tasks to release memory.
> > >>
> > >> This patch series adds a new function CMA_AGGRESSIVE to make CMA memory
> > >> be more aggressive about allocation.
> > >> If function CMA_AGGRESSIVE is available, when Linux kernel call function
> > >> __rmqueue try to get pages from MIGRATE_MOVABLE and conditions allow,
> > >> MIGRATE_CMA will be allocated as MIGRATE_MOVABLE first.  If MIGRATE_CMA
> > >> doesn't have enough pages for allocation, go back to allocate memory from
> > >> MIGRATE_MOVABLE.
> > >> Then the memory of MIGRATE_MOVABLE can be kept for MIGRATE_UNMOVABLE and
> > >> MIGRATE_RECLAIMABLE which doesn't have fallback MIGRATE_CMA.
> > >
> > > Hello,
> > >
> > > I did some work similar to this.
> > > Please reference following links.
> > >
> > > https://lkml.org/lkml/2014/5/28/64
> > > https://lkml.org/lkml/2014/5/28/57
> > 
> > > I tested #1 approach and found the problem. Although free memory on
> > > meminfo can move around low watermark, there is large fluctuation on free
> > > memory, because too many pages are reclaimed when kswapd is invoked.
> > > Reason for this behaviour is that successive allocated CMA pages are
> > > on the LRU list in that order and kswapd reclaim them in same order.
> > > These memory doesn't help watermark checking from kwapd, so too many
> > > pages are reclaimed, I guess.
> > 
> > This issue can be handle with some change around shrink code.  I am
> > trying to integrate  a patch for them.
> > But I am not sure we met the same issue.  Do you mind give me more
> > info about this part?
> 
> I forgot the issue because there is so big time-gap. I need sometime
> to bring issue back to my brain. I will answer it soon after some thinking.

Hello,

Yes, the issue I mentioned before can be handled by modifying shrink code.
I didn't dive into the problem so I also didn't know the detail. What
I know is that there is large fluctuation on memory statistics and
my guess is that it is caused by order of reclaimable pages. If we use
#1 approach, the bulk of cma pages used for page cache or something are
linked together and will be reclaimed all at once, because reclaiming cma
pages are not counted and watermark check still fails until normal
pages are reclaimed.

I think that round-robin approach is better. Reasons are on the
following:

1) Want to spread CMA freepages to whole users, not specific one user.
We can modify shirnk code not to reclaim pages on CMA, because it
doesn't help watermark checking in some cases. In this case, if we
don't use round-robin, one specific user whose mapping with CMA pages
can get all the benefit. Others would take all the overhead. I think that
spreading will make all users fair.

2) Using CMA freepages first needlessly imposes overhead to CMA user.
If the system has enough normal freepages, it is better not to use it
as much as possible.

Thanks.

--
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-04  2:31 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-16  3:35 [PATCH 0/4] (CMA_AGGRESSIVE) Make CMA memory be more aggressive about allocation Hui Zhu
2014-10-16  3:35 ` [PATCH 1/4] (CMA_AGGRESSIVE) Add CMA_AGGRESSIVE to Kconfig Hui Zhu
2014-10-18 22:15   ` Pavel Machek
     [not found]   ` <201410220126.s9M1Qita026502@spam.xiaomi.com>
2014-10-22  5:44     ` 朱辉
2014-10-16  3:35 ` [PATCH 2/4] (CMA_AGGRESSIVE) Add argument hibernation to function shrink_all_memory Hui Zhu
2014-10-16  8:45   ` Rafael J. Wysocki
2014-10-17  6:18     ` 朱辉
2014-10-17  9:28     ` [PATCH v2 2/4] (CMA_AGGRESSIVE) Add new function shrink_all_memory_for_cma Hui Zhu
2014-10-18  4:50       ` PINTU KUMAR
2014-10-16  3:35 ` [PATCH 3/4] (CMA_AGGRESSIVE) Update reserve custom contiguous area code Hui Zhu
2014-10-17  9:30   ` [PATCH v2 " Hui Zhu
2014-10-16  3:35 ` [PATCH 4/4] (CMA_AGGRESSIVE) Update page alloc function Hui Zhu
2014-10-24  5:28   ` Joonsoo Kim
2014-11-28  3:45     ` Hui Zhu
2014-10-16  5:13 ` [PATCH 0/4] (CMA_AGGRESSIVE) Make CMA memory be more aggressive about allocation Weijie Yang
2014-10-16  8:55 ` Laura Abbott
2014-10-17  7:44   ` 朱辉
2014-10-22 12:01   ` Peter Hurley
2014-10-23  0:40     ` 朱辉
2014-10-29 14:43   ` Vlastimil Babka
2014-11-03  8:46     ` Hui Zhu
2014-11-04  7:53     ` Minchan Kim
2014-11-04  8:59       ` Hui Zhu
2014-11-04  9:29       ` Vlastimil Babka
2014-11-07  7:06         ` Minchan Kim
2014-10-24  5:25 ` Joonsoo Kim
2014-11-03  7:28   ` Hui Zhu
2014-11-03  8:05     ` Joonsoo Kim
2014-11-04  2:31       ` Joonsoo Kim [this message]

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=20141104023112.GA17804@js1304-P5Q-DELUXE \
    --to=iamjoonsoo.kim@lge.com \
    --cc=akinobu.mita@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=aneesh.kumar@linux.vnet.ibm.com \
    --cc=atomlin@redhat.com \
    --cc=axboe@fb.com \
    --cc=ben@decadent.org.uk \
    --cc=ddstreet@ieee.org \
    --cc=deller@gmx.de \
    --cc=hannes@cmpxchg.org \
    --cc=hughd@google.com \
    --cc=k.khlebnikov@samsung.com \
    --cc=keescook@chromium.org \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=lauraa@codeaurora.org \
    --cc=len.brown@intel.com \
    --cc=linux-kernel@vger. \
    --cc=m.szyprowski@samsung.com \
    --cc=mgorman@suse.de \
    --cc=mina86@mina86.com \
    --cc=minchan@kernel.org \
    --cc=mingo@kernel.org \
    --cc=msalter@redhat.com \
    --cc=n-horiguchi@ah.jp.nec.com \
    --cc=nasa4836@gmail.com \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=pavel@ucw.cz \
    --cc=peterz@infradead.org \
    --cc=raistlin@linux.it \
    --cc=riel@redhat.com \
    --cc=rientjes@google.com \
    --cc=rjw@rjwysocki.net \
    --cc=sasha.levin@oracle.com \
    --cc=suleiman@google.com \
    --cc=tangchen@cn.fujitsu.com \
    --cc=teawater@gmail.com \
    --cc=vbabka@suse.cz \
    --cc=vdavydov@parallels.com \
    --cc=zhuhui@xiaomi.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).