Re: [PATCH 2/3] add inactive ratio calculation function of eachzone V2

From: Mel Gorman
Date: Mon May 25 2009 - 05:01:00 EST


On Thu, May 21, 2009 at 09:23:21AM +0900, Minchan Kim wrote:
> Changelog since V1
> o Change function name from calculate_zone_inactive_ratio to calculate_inactive_ratio
> - by Mel Gorman advise
> o Modify tab indent - by Mel Gorman advise
>
> This patch devide setup_per_zone_inactive_ratio with
> per-zone inactive ratio calculaton.
>
> This patch is just for helping my next patch.
> (reset wmark_min and inactive ratio of zone when hotplug happens)
>
> Signed-off-by: Minchan Kim <minchan.kim@xxxxxxxxx>
> Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@xxxxxxxxxxxxxx>

Reviewed-by: Mel Gorman <mel@xxxxxxxxx>

> CC: Rik van Riel <riel@xxxxxxxxxx>
> CC: Johannes Weiner <hannes@xxxxxxxxxxx>
> ---
> include/linux/mm.h | 1 +
> mm/page_alloc.c | 28 ++++++++++++++++------------
> 2 files changed, 17 insertions(+), 12 deletions(-)
>
> diff --git a/include/linux/mm.h b/include/linux/mm.h
> index 7ea4d1b..5d7a835 100644
> --- a/include/linux/mm.h
> +++ b/include/linux/mm.h
> @@ -1059,6 +1059,7 @@ extern void set_dma_reserve(unsigned long new_dma_reserve);
> extern void memmap_init_zone(unsigned long, int, unsigned long,
> unsigned long, enum memmap_context);
> extern void setup_per_zone_wmarks(void);
> +extern void calculate_zone_inactive_ratio(struct zone *zone);
> extern void mem_init(void);
> extern void __init mmap_init(void);
> extern void show_mem(void);
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index b518ea7..f11cfbf 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -4553,22 +4553,26 @@ void setup_per_zone_wmarks(void)
> * 1TB 101 10GB
> * 10TB 320 32GB
> */
> -static void __init setup_per_zone_inactive_ratio(void)
> +void calculate_zone_inactive_ratio(struct zone *zone)
> {
> - struct zone *zone;
> + unsigned int gb, ratio;
>
> - for_each_zone(zone) {
> - unsigned int gb, ratio;
> + /* Zone size in gigabytes */
> + gb = zone->present_pages >> (30 - PAGE_SHIFT);
> + if (gb)
> + ratio = int_sqrt(10 * gb);
> + else
> + ratio = 1;
>
> - /* Zone size in gigabytes */
> - gb = zone->present_pages >> (30 - PAGE_SHIFT);
> - if (gb)
> - ratio = int_sqrt(10 * gb);
> - else
> - ratio = 1;
> + zone->inactive_ratio = ratio;
> +}
>
> - zone->inactive_ratio = ratio;
> - }
> +static void __init setup_per_zone_inactive_ratio(void)
> +{
> + struct zone *zone;
> +
> + for_each_zone(zone)
> + calculate_zone_inactive_ratio(zone);
> }
>
> /*
> --
> 1.5.4.3
>

--
Mel Gorman
Part-time Phd Student Linux Technology Center
University of Limerick IBM Dublin Software Lab
--
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/