Re: [PATCH 7/9] try harder on large allocations

Coywolf Qi Hunt
2005-09-27T07:21:03Z

On 9/27/05, Joel Schopp <jschopp@austin.ibm.com> wrote:
> Fragmentation avoidance patches increase our chances of satisfying high order
> allocations. So this patch takes more than one iteration at trying to fulfill
> those allocations because unlike before the extra iterations are often useful.
>
> Signed-off-by: Mel Gorman <mel@csn.ul.ie>
> Signed-off-by: Joel Schopp <jschopp@austin.ibm.com>
>
>
> Index: 2.6.13-joel2/mm/page_alloc.c
> ===================================================================
> --- 2.6.13-joel2.orig/mm/page_alloc.c 2005-09-21 11:13:14.%N -0500
> +++ 2.6.13-joel2/mm/page_alloc.c 2005-09-21 11:14:49.%N -0500
> @@ -944,7 +944,8 @@ __alloc_pages(unsigned int __nocast gfp_
> int can_try_harder;
> int did_some_progress;
> int alloctype;
> -
> + int highorder_retry = 3;
> +
> alloctype = (gfp_mask & __GFP_RCLM_BITS);
> might_sleep_if(wait);
>
> @@ -1090,7 +1091,14 @@ rebalance:
> goto got_pg;
> }
>
> - out_of_memory(gfp_mask, order);
> + if (order < MAX_ORDER/2) out_of_memory(gfp_mask, order);

Shouldn't that be written in two lines?

> + /*
> + * Due to low fragmentation efforts, we should try a little
> + * harder to satisfy high order allocations
> + */
> + if (order >= MAX_ORDER/2 && --highorder_retry > 0)
> + goto rebalance;
> +
> goto restart;
> }

--
Coywolf Qi Hunt