Re: [PATCH 1/3] mm/page_alloc: don't break highest order freepage if steal

From: Vlastimil Babka
Date: Tue May 12 2015 - 03:57:08 EST


On 04/27/2015 10:42 AM, Joonsoo Kim wrote:
On Mon, Apr 27, 2015 at 09:08:50AM +0100, Mel Gorman wrote:
On Mon, Apr 27, 2015 at 04:23:39PM +0900, Joonsoo Kim wrote:
When we steal whole pageblock, we don't need to break highest order
freepage. Perhaps, there is small order freepage so we can use it.


The reason why the largest block is taken is to reduce the probability
there will be another fallback event in the near future. Early on, there
were a lot of tests conducted to measure the number of external fragmenting
events and take steps to reduce them. Stealing the largest highest order
freepage was one of those steps.

Hello, Mel.

Purpose of this patch is not "stop steal highest order freepage".
Currently, in case of that we steal all freepage including highest
order freepage in certain pageblock, we break highest order freepage and
return it even if we have low order freepage that we immediately steal.

For example,

Pageblock A has 5 freepage (4 * order 0, 1 * order 3) and
we try to steal all freepage on pageblock A.

Withouth this patch, we move all freepage to requested migratetype
buddy list and break order 3 freepage. Leftover is like as following.

(5 * order 0, 1 * order 1, 1* order 2)

With this patch, (3 * order 0, 1 * order 3) remains.

I think that this is better than before because we still have high order
page. Isn't it?

I agree that this should be better in some cases and shouldn't be worse in any case. Nice catch.

Thanks.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxxx For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/