All of lore.kernel.org
 help / color / mirror / Atom feed
From: Minchan Kim <minchan@kernel.org>
To: Vlastimil Babka <vbabka@suse.cz>
Cc: linux-mm@kvack.org, Joonsoo Kim <iamjoonsoo.kim@lge.com>,
	linux-kernel@vger.kernel.org, Mel Gorman <mgorman@suse.de>,
	Rik van Riel <riel@redhat.com>,
	David Rientjes <rientjes@google.com>
Subject: Re: [RFC PATCH 1/3] mm: when stealing freepages, also take pages created by splitting buddy page
Date: Tue, 9 Dec 2014 12:02:43 +0900	[thread overview]
Message-ID: <20141209030243.GC3358@bbox> (raw)
In-Reply-To: <1417713178-10256-2-git-send-email-vbabka@suse.cz>

On Thu, Dec 04, 2014 at 06:12:56PM +0100, Vlastimil Babka wrote:
> When __rmqueue_fallback() is called to allocate a page of order X, it will
> find a page of order Y >= X of a fallback migratetype, which is different from
> the desired migratetype. With the help of try_to_steal_freepages(), it may
> change the migratetype (to the desired one) also of:
> 
> 1) all currently free pages in the pageblock containing the fallback page
> 2) the fallback pageblock itself
> 3) buddy pages created by splitting the fallback page (when Y > X)
> 
> These decisions take the order Y into account, as well as the desired
> migratetype, with the goal of preventing multiple fallback allocations that
> could e.g. distribute UNMOVABLE allocations among multiple pageblocks.
> 
> Originally, decision for 1) has implied the decision for 3). Commit
> 47118af076f6 ("mm: mmzone: MIGRATE_CMA migration type added") changed that
> (probably unintentionally) so that the buddy pages in case 3) are always
> changed to the desired migratetype, except for CMA pageblocks.
> 
> Commit fef903efcf0c ("mm/page_allo.c: restructure free-page stealing code and
> fix a bug") did some refactoring and added a comment that the case of 3) is
> intended. Commit 0cbef29a7821 ("mm: __rmqueue_fallback() should respect
> pageblock type") removed the comment and tried to restore the original behavior
> where 1) implies 3), but due to the previous refactoring, the result is instead
> that only 2) implies 3) - and the conditions for 2) are less frequently met
> than conditions for 1). This may increase fragmentation in situations where the
> code decides to steal all free pages from the pageblock (case 1)), but then
> gives back the buddy pages produced by splitting.
> 
> This patch restores the original intended logic where 1) implies 3). During
> testing with stress-highalloc from mmtests, this has shown to decrease the
> number of events where UNMOVABLE and RECLAIMABLE allocations steal from MOVABLE
> pageblocks, which can lead to permanent fragmentation. It has increased the
> number of events when MOVABLE allocations steal from UNMOVABLE or RECLAIMABLE
> pageblocks, but these are fixable by sync compaction and thus less harmful.
> 
> Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
Acked-by: Minchan Kim <minchan@kernel.org>

I expect you will Cc -stable when you respin with fixing pointed out
by Joonsoo.

-- 
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: Vlastimil Babka <vbabka@suse.cz>
Cc: linux-mm@kvack.org, Joonsoo Kim <iamjoonsoo.kim@lge.com>,
	linux-kernel@vger.kernel.org, Mel Gorman <mgorman@suse.de>,
	Rik van Riel <riel@redhat.com>,
	David Rientjes <rientjes@google.com>
Subject: Re: [RFC PATCH 1/3] mm: when stealing freepages, also take pages created by splitting buddy page
Date: Tue, 9 Dec 2014 12:02:43 +0900	[thread overview]
Message-ID: <20141209030243.GC3358@bbox> (raw)
In-Reply-To: <1417713178-10256-2-git-send-email-vbabka@suse.cz>

On Thu, Dec 04, 2014 at 06:12:56PM +0100, Vlastimil Babka wrote:
> When __rmqueue_fallback() is called to allocate a page of order X, it will
> find a page of order Y >= X of a fallback migratetype, which is different from
> the desired migratetype. With the help of try_to_steal_freepages(), it may
> change the migratetype (to the desired one) also of:
> 
> 1) all currently free pages in the pageblock containing the fallback page
> 2) the fallback pageblock itself
> 3) buddy pages created by splitting the fallback page (when Y > X)
> 
> These decisions take the order Y into account, as well as the desired
> migratetype, with the goal of preventing multiple fallback allocations that
> could e.g. distribute UNMOVABLE allocations among multiple pageblocks.
> 
> Originally, decision for 1) has implied the decision for 3). Commit
> 47118af076f6 ("mm: mmzone: MIGRATE_CMA migration type added") changed that
> (probably unintentionally) so that the buddy pages in case 3) are always
> changed to the desired migratetype, except for CMA pageblocks.
> 
> Commit fef903efcf0c ("mm/page_allo.c: restructure free-page stealing code and
> fix a bug") did some refactoring and added a comment that the case of 3) is
> intended. Commit 0cbef29a7821 ("mm: __rmqueue_fallback() should respect
> pageblock type") removed the comment and tried to restore the original behavior
> where 1) implies 3), but due to the previous refactoring, the result is instead
> that only 2) implies 3) - and the conditions for 2) are less frequently met
> than conditions for 1). This may increase fragmentation in situations where the
> code decides to steal all free pages from the pageblock (case 1)), but then
> gives back the buddy pages produced by splitting.
> 
> This patch restores the original intended logic where 1) implies 3). During
> testing with stress-highalloc from mmtests, this has shown to decrease the
> number of events where UNMOVABLE and RECLAIMABLE allocations steal from MOVABLE
> pageblocks, which can lead to permanent fragmentation. It has increased the
> number of events when MOVABLE allocations steal from UNMOVABLE or RECLAIMABLE
> pageblocks, but these are fixable by sync compaction and thus less harmful.
> 
> Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
Acked-by: Minchan Kim <minchan@kernel.org>

I expect you will Cc -stable when you respin with fixing pointed out
by Joonsoo.

-- 
Kind regards,
Minchan Kim

  parent reply	other threads:[~2014-12-09  3:01 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-04 17:12 [PATCH 0/3] page stealing tweaks Vlastimil Babka
2014-12-04 17:12 ` Vlastimil Babka
2014-12-04 17:12 ` [RFC PATCH 1/3] mm: when stealing freepages, also take pages created by splitting buddy page Vlastimil Babka
2014-12-04 17:12   ` Vlastimil Babka
2014-12-08  6:54   ` Joonsoo Kim
2014-12-08  6:54     ` Joonsoo Kim
2014-12-08 11:07   ` Mel Gorman
2014-12-08 11:07     ` Mel Gorman
2014-12-09  3:02   ` Minchan Kim [this message]
2014-12-09  3:02     ` Minchan Kim
2014-12-04 17:12 ` [RFC PATCH 2/3] mm: more aggressive page stealing for UNMOVABLE allocations Vlastimil Babka
2014-12-04 17:12   ` Vlastimil Babka
2014-12-08  7:11   ` Joonsoo Kim
2014-12-08  7:11     ` Joonsoo Kim
2014-12-08 10:27     ` Vlastimil Babka
2014-12-08 10:27       ` Vlastimil Babka
2014-12-09  8:28       ` Joonsoo Kim
2014-12-09  8:28         ` Joonsoo Kim
2014-12-09  9:12         ` Vlastimil Babka
2014-12-09  9:12           ` Vlastimil Babka
2014-12-10  6:32           ` Joonsoo Kim
2014-12-10  6:32             ` Joonsoo Kim
2014-12-08 11:16   ` Mel Gorman
2014-12-08 11:16     ` Mel Gorman
2014-12-09  3:09   ` Minchan Kim
2014-12-09  3:09     ` Minchan Kim
2014-12-09  9:47     ` Mel Gorman
2014-12-09  9:47       ` Mel Gorman
2014-12-04 17:12 ` [RFC PATCH 3/3] mm: always steal split buddies in fallback allocations Vlastimil Babka
2014-12-04 17:12   ` Vlastimil Babka
2014-12-08  7:36   ` Joonsoo Kim
2014-12-08  7:36     ` Joonsoo Kim
2014-12-08 10:30     ` Vlastimil Babka
2014-12-08 10:30       ` Vlastimil Babka
2014-12-08 11:26   ` Mel Gorman
2014-12-08 11:26     ` Mel Gorman
2014-12-09  3:17   ` Minchan Kim
2014-12-09  3:17     ` Minchan 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=20141209030243.GC3358@bbox \
    --to=minchan@kernel.org \
    --cc=iamjoonsoo.kim@lge.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mgorman@suse.de \
    --cc=riel@redhat.com \
    --cc=rientjes@google.com \
    --cc=vbabka@suse.cz \
    /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.