[PATCH] mm: compact: remove watermark check at compact suitable
There are two paths calling this function.
For direct compact, there is no need to check the zone watermark here.
For kswapd wakeup kcompactd, since there is a reclaim before this.
It makes sense to do compact even the watermark is ok at this time.
diff --git a/mm/compaction.c b/mm/compaction.c
index 8fa2540..cb322df 100644
@@ -1260,13 +1260,6 @@ static unsigned long __compaction_suitable(struct zone *zone, int order,
watermark = low_wmark_pages(zone);
- * If watermarks for high-order allocation are already met, there
- * should be no need for compaction at all.
- if (zone_watermark_ok(zone, order, watermark, classzone_idx,
- return COMPACT_PARTIAL;
* Watermarks for order-0 must be met for compaction. Note the 2UL.
Re: [PATCH] mm: compact: remove watermark check at compact suitable
On 05/23/2016 05:20 AM, Chen Feng wrote:
> There are two paths calling this function.
> For direct compact, there is no need to check the zone watermark here.
> For kswapd wakeup kcompactd, since there is a reclaim before this.
> It makes sense to do compact even the watermark is ok at this time.
I'm just working on v2 of the series  and some patches planned for v2 are
trying to simplify the watermark checks around compaction. The check you are
removing looked like simple and obvious one, so I didn't change it. But I'll
think more about your patch, e.g. if there are some corner cases. See for
example the fragindex check:
* index of -1000 would imply allocations might succeed depending on
* watermarks, but we already failed the high-order watermark check
After your patch, there is no more high-order watermark check, so the assumption
here is gone.
Also the comment above __compaction_suitable() should be updated too.