linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [RFC] mm: a question about high-order check in __zone_watermark_ok()
@ 2016-09-26  8:47 Xishi Qiu
  2016-09-26  8:52 ` Vlastimil Babka
  2016-09-26  8:58 ` Michal Hocko
  0 siblings, 2 replies; 9+ messages in thread
From: Xishi Qiu @ 2016-09-26  8:47 UTC (permalink / raw)
  To: Mel Gorman, Michal Hocko, Johannes Weiner, Vlastimil Babka
  Cc: LKML, Linux MM, Yisheng Xie

commit 97a16fc82a7c5b0cfce95c05dfb9561e306ca1b1
(mm, page_alloc: only enforce watermarks for order-0 allocations)
rewrite the high-order check in __zone_watermark_ok(), but I think it
quietly fix a bug. Please see the following.

Before this patch, the high-order check is this:
__zone_watermark_ok()
	...
	for (o = 0; o < order; o++) {
		/* At the next order, this order's pages become unavailable */
		free_pages -= z->free_area[o].nr_free << o;

		/* Require fewer higher order pages to be free */
		min >>= 1;

		if (free_pages <= min)
			return false;
	}
	...

If we have cma memory, and we alloc a high-order movable page, then it's right.

But if we alloc a high-order unmovable page(e.g. alloc kernel stack in dup_task_struct()),
and there are a lot of high-order cma pages, but little high-order unmovable
pages, the it is still return *true*, but we will alloc *failed* finally, because
we cannot fallback from migrate_unmovable to migrate_cma, right?

Also if we doing __alloc_pages_slowpath(), the compact will not work, because
__zone_watermark_ok() always return true, and it lead to alloc a high-order
unmovable page failed, then do direct reclaim.

Thanks,
Xishi Qiu

--
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>

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2016-09-28  7:55 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-09-26  8:47 [RFC] mm: a question about high-order check in __zone_watermark_ok() Xishi Qiu
2016-09-26  8:52 ` Vlastimil Babka
2016-09-26  8:58 ` Michal Hocko
2016-09-26  9:16   ` Xishi Qiu
2016-09-26  9:43     ` Michal Hocko
2016-09-26 10:17       ` Xishi Qiu
2016-09-26 11:02         ` Michal Hocko
2016-09-28  5:52           ` Joonsoo Kim
2016-09-28  7:54             ` Xishi Qiu

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).