Re: [PATCH 3/3] mm: page allocator: Drain per-cpu lists after directreclaim allocation fails

From: Christoph Lameter
Date: Thu Sep 09 2010 - 09:45:26 EST


On Thu, 9 Sep 2010, Mel Gorman wrote:

> @@ -1876,10 +1890,13 @@ retry:
> migratetype);
>
> /*
> - * If an allocation failed after direct reclaim, it could be because
> - * pages are pinned on the per-cpu lists. Drain them and try again
> + * If a high-order allocation failed after direct reclaim, it could
> + * be because pages are pinned on the per-cpu lists. However, only
> + * do it for PAGE_ALLOC_COSTLY_ORDER as the cost of the IPI needed
> + * to drain the pages is itself high. Assume that lower orders
> + * will naturally free without draining.
> */
> - if (!page && !drained) {
> + if (!page && !drained && order > PAGE_ALLOC_COSTLY_ORDER) {
> drain_all_pages();
> drained = true;
> goto retry;
>

This will have the effect of never sending IPIs for slab allocations since
they do not do allocations for orders > PAGE_ALLOC_COSTLY_ORDER.

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