linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: mel@skynet.ie (Mel Gorman)
To: clameter@sgi.com
Cc: akpm@linux-foundation.org, linux-mm@kvack.org
Subject: Re: [patch 09/10] SLUB: Exploit page mobility to increase allocation order
Date: Fri, 27 Apr 2007 12:14:31 +0100	[thread overview]
Message-ID: <20070427111431.GF3645@skynet.ie> (raw)
In-Reply-To: <20070427042909.415420974@sgi.com>

On (26/04/07 21:27), clameter@sgi.com didst pronounce:
> If there is page mobility then we can defragment memory. So its possible to
> use higher order of pages for slab allocations.
> 
> If the defaults were not overridden set the max order to 4 and guarantee 16
> objects per slab. This will put some stress on Mel's antifrag approaches.
> If these defaults are too large then they should be later reduced.
> 

I see this went through mm-commits. When the next -mm kernel comes out,
I'll grind them through the external fragmentation tests and see how it
works out. Not all slabs are reclaimable so it might have side-effects
if there are large amounts of slab allocations that are not allocated
__GFP_RECLAIMABLE. Testing will tell.

> Cc: Mel Gorman <mel@skynet.ie>
> Signed-off-by: Christoph Lameter <clameter@sgi.com>
> 
> Index: linux-2.6.21-rc7-mm2/include/linux/mmzone.h
> ===================================================================
> --- linux-2.6.21-rc7-mm2.orig/include/linux/mmzone.h	2007-04-26 20:57:58.000000000 -0700
> +++ linux-2.6.21-rc7-mm2/include/linux/mmzone.h	2007-04-26 21:05:48.000000000 -0700
> @@ -25,6 +25,8 @@
>  #endif
>  #define MAX_ORDER_NR_PAGES (1 << (MAX_ORDER - 1))
>  
> +extern int page_group_by_mobility_disabled;
> +
>  /*
>   * PAGE_ALLOC_COSTLY_ORDER is the order at which allocations are deemed
>   * costly to service.  That is between allocation orders which should
> Index: linux-2.6.21-rc7-mm2/mm/slub.c
> ===================================================================
> --- linux-2.6.21-rc7-mm2.orig/mm/slub.c	2007-04-26 21:02:01.000000000 -0700
> +++ linux-2.6.21-rc7-mm2/mm/slub.c	2007-04-26 21:10:40.000000000 -0700
> @@ -129,6 +129,13 @@
>  #endif
>  
>  /*
> + * If antifragmentation methods are in effect then increase the
> + * slab sizes to increase performance
> + */
> +#define DEFAULT_ANTIFRAG_MAX_ORDER 4
> +#define DEFAULT_ANTIFRAG_MIN_OBJECTS 16
> +
> +/*
>   * Mininum number of partial slabs. These will be left on the partial
>   * lists even if they are empty. kmem_cache_shrink may reclaim them.
>   */
> @@ -1450,6 +1457,11 @@ static struct page *get_object_page(cons
>   */
>  
>  /*
> + * Set if the user has overridden any of the order related defaults.
> + */
> +static int user_override;
> +
> +/*
>   * Mininum / Maximum order of slab pages. This influences locking overhead
>   * and slab fragmentation. A higher order reduces the number of partial slabs
>   * and increases the number of allocations possible without having to
> @@ -1985,7 +1997,7 @@ static struct kmem_cache *kmalloc_caches
>  static int __init setup_slub_min_order(char *str)
>  {
>  	get_option (&str, &slub_min_order);
> -
> +	user_override = 1;
>  	return 1;
>  }
>  
> @@ -1994,7 +2006,7 @@ __setup("slub_min_order=", setup_slub_mi
>  static int __init setup_slub_max_order(char *str)
>  {
>  	get_option (&str, &slub_max_order);
> -
> +	user_override = 1;
>  	return 1;
>  }
>  
> @@ -2003,7 +2015,7 @@ __setup("slub_max_order=", setup_slub_ma
>  static int __init setup_slub_min_objects(char *str)
>  {
>  	get_option (&str, &slub_min_objects);
> -
> +	user_override = 1;
>  	return 1;
>  }
>  
> @@ -2319,6 +2331,15 @@ void __init kmem_cache_init(void)
>  {
>  	int i;
>  
> +	if (!page_group_by_mobility_disabled && !user_override) {
> +		/*
> +		 * Antifrag support available. Increase usable
> +		 * page order and generate slabs with more objects.
> +	 	 */
> +		slub_max_order = DEFAULT_ANTIFRAG_MAX_ORDER;
> +		slub_min_objects = DEFAULT_ANTIFRAG_MIN_OBJECTS;
> +	}
> +
>  #ifdef CONFIG_NUMA
>  	/*
>  	 * Must first have the slab cache available for the allocations of the
> 
> --

-- 
-- 
Mel Gorman
Part-time Phd Student                          Linux Technology Center
University of Limerick                         IBM Dublin Software Lab

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

  parent reply	other threads:[~2007-04-27 11:14 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-04-27  4:26 [patch 00/10] SLUB patches against 2.6.21-rc7-mm2 clameter
2007-04-27  4:26 ` [patch 01/10] SLUB: Remove duplicate VM_BUG_ON clameter
2007-04-27  4:26 ` [patch 02/10] SLUB: Fix sysfs directory handling clameter
2007-04-27  6:31   ` Andrew Morton
2007-04-27  7:02     ` Christoph Lameter
2007-04-27  7:10       ` Andrew Morton
2007-04-27  4:26 ` [patch 03/10] SLUB: debug printk cleanup clameter
2007-04-27  6:32   ` Andrew Morton
2007-04-27  4:26 ` [patch 04/10] SLUB: Conform more to SLABs SLAB_HWCACHE_ALIGN behavior clameter
2007-04-27  4:27 ` [patch 05/10] SLUB: Add MIN_PARTIAL clameter
2007-04-27  4:27 ` [patch 06/10] SLUB: Free slabs and sort partial slab lists in kmem_cache_shrink clameter
2007-04-27  4:27 ` [patch 07/10] SLUB: Major slabinfo update clameter
2007-04-27  4:27 ` [patch 08/10] SLUB: Reduce the order of allocations to avoid fragmentation clameter
2007-04-27  4:27 ` [patch 09/10] SLUB: Exploit page mobility to increase allocation order clameter
2007-04-27  6:32   ` Andrew Morton
2007-04-27  7:04     ` Christoph Lameter
2007-04-27 11:14   ` Mel Gorman [this message]
2007-04-27 17:15     ` Christoph Lameter
2007-04-27  4:27 ` [patch 10/10] SLUB: i386 support clameter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070427111431.GF3645@skynet.ie \
    --to=mel@skynet.ie \
    --cc=akpm@linux-foundation.org \
    --cc=clameter@sgi.com \
    --cc=linux-mm@kvack.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox