From: David Rientjes <rientjes@google.com>
To: Mel Gorman <mgorman@suse.de>
Cc: Andrew Morton <akpm@linux-foundation.org>,
James Bottomley <James.Bottomley@hansenpartnership.com>,
Colin King <colin.king@canonical.com>,
Raghavendra D Prabhu <raghu.prabhu13@gmail.com>,
Jan Kara <jack@suse.cz>, Chris Mason <chris.mason@oracle.com>,
Christoph Lameter <cl@linux.com>,
Pekka Enberg <penberg@kernel.org>, Rik van Riel <riel@redhat.com>,
Johannes Weiner <hannes@cmpxchg.org>,
linux-fsdevel <linux-fsdevel@vger.kernel.org>,
linux-mm <linux-mm@kvack.org>,
linux-kernel <linux-kernel@vger.kernel.org>,
linux-ext4 <linux-ext4@vger.kernel.org>
Subject: Re: [PATCH 3/3] mm: slub: Default slub_max_order to 0
Date: Wed, 11 May 2011 13:38:47 -0700 (PDT) [thread overview]
Message-ID: <alpine.DEB.2.00.1105111314310.9346@chino.kir.corp.google.com> (raw)
In-Reply-To: <1305127773-10570-4-git-send-email-mgorman@suse.de>
On Wed, 11 May 2011, Mel Gorman wrote:
> To avoid locking and per-cpu overhead, SLUB optimisically uses
> high-order allocations up to order-3 by default and falls back to
> lower allocations if they fail. While care is taken that the caller
> and kswapd take no unusual steps in response to this, there are
> further consequences like shrinkers who have to free more objects to
> release any memory. There is anecdotal evidence that significant time
> is being spent looping in shrinkers with insufficient progress being
> made (https://lkml.org/lkml/2011/4/28/361) and keeping kswapd awake.
>
> SLUB is now the default allocator and some bug reports have been
> pinned down to SLUB using high orders during operations like
> copying large amounts of data. SLUBs use of high-orders benefits
> applications that are sized to memory appropriately but this does not
> necessarily apply to large file servers or desktops. This patch
> causes SLUB to use order-0 pages like SLAB does by default.
> There is further evidence that this keeps kswapd's usage lower
> (https://lkml.org/lkml/2011/5/10/383).
>
This is going to severely impact slub's performance for applications on
machines with plenty of memory available where fragmentation isn't a
concern when allocating from caches with large object sizes (even
changing the min order of kamlloc-256 from 1 to 0!) by default for users
who don't use slub_max_order=3 on the command line. SLUB relies heavily
on allocating from the cpu slab and freeing to the cpu slab to avoid the
slowpaths, so higher order slabs are important for its performance.
I can get numbers for a simple netperf TCP_RR benchmark with this change
applied to show the degradation on a server with >32GB of RAM with this
patch applied.
It would be ideal if this default could be adjusted based on the amount of
memory available in the smallest node to determine whether we're concerned
about making higher order allocations. (Using the smallest node as a
metric so that mempolicies and cpusets don't get unfairly biased against.)
With the previous changes in this patchset, specifically avoiding waking
kswapd and doing compaction for the higher order allocs before falling
back to the min order, it shouldn't be devastating to try an order-3 alloc
that will fail quickly.
> Signed-off-by: Mel Gorman <mgorman@suse.de>
> ---
> Documentation/vm/slub.txt | 2 +-
> mm/slub.c | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/vm/slub.txt b/Documentation/vm/slub.txt
> index 07375e7..778e9fa 100644
> --- a/Documentation/vm/slub.txt
> +++ b/Documentation/vm/slub.txt
> @@ -117,7 +117,7 @@ can be influenced by kernel parameters:
>
> slub_min_objects=x (default 4)
> slub_min_order=x (default 0)
> -slub_max_order=x (default 1)
> +slub_max_order=x (default 0)
Hmm, that was wrong to begin with, it should have been 3.
>
> slub_min_objects allows to specify how many objects must at least fit
> into one slab in order for the allocation order to be acceptable.
> diff --git a/mm/slub.c b/mm/slub.c
> index 1071723..23a4789 100644
> --- a/mm/slub.c
> +++ b/mm/slub.c
> @@ -2198,7 +2198,7 @@ EXPORT_SYMBOL(kmem_cache_free);
> * take the list_lock.
> */
> static int slub_min_order;
> -static int slub_max_order = PAGE_ALLOC_COSTLY_ORDER;
> +static int slub_max_order;
> static int slub_min_objects;
>
> /*
--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2011-05-11 20:38 UTC|newest]
Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-11 15:29 [PATCH 0/3] Reduce impact to overall system of SLUB using high-order allocations Mel Gorman
2011-05-11 15:29 ` [PATCH 1/3] mm: slub: Do not wake kswapd for SLUBs speculative " Mel Gorman
2011-05-11 20:38 ` David Rientjes
2011-05-11 15:29 ` [PATCH 2/3] mm: slub: Do not take expensive steps " Mel Gorman
2011-05-11 20:38 ` David Rientjes
2011-05-11 21:10 ` Mel Gorman
2011-05-12 17:25 ` Andrea Arcangeli
2011-05-11 15:29 ` [PATCH 3/3] mm: slub: Default slub_max_order to 0 Mel Gorman
2011-05-11 20:38 ` David Rientjes [this message]
2011-05-11 20:53 ` James Bottomley
2011-05-11 21:09 ` Mel Gorman
2011-05-11 22:27 ` David Rientjes
2011-05-13 10:14 ` Mel Gorman
2011-05-12 17:36 ` Andrea Arcangeli
2011-05-16 21:03 ` David Rientjes
2011-05-17 9:48 ` Mel Gorman
2011-05-17 19:25 ` David Rientjes
2011-05-12 14:43 ` Christoph Lameter
2011-05-12 15:15 ` James Bottomley
2011-05-12 15:27 ` Christoph Lameter
2011-05-12 15:43 ` James Bottomley
2011-05-12 15:46 ` Dave Jones
2011-05-12 16:00 ` James Bottomley
2011-05-12 16:08 ` Dave Jones
2011-05-12 16:27 ` Christoph Lameter
2011-05-12 16:30 ` James Bottomley
2011-05-12 16:48 ` Christoph Lameter
2011-05-12 17:46 ` Andrea Arcangeli
2011-05-12 18:00 ` Christoph Lameter
2011-05-12 18:18 ` Andrea Arcangeli
2011-05-12 17:06 ` Pekka Enberg
2011-05-12 17:11 ` Pekka Enberg
2011-05-12 17:38 ` Christoph Lameter
2011-05-12 18:00 ` Andrea Arcangeli
2011-05-13 9:49 ` Mel Gorman
2011-05-15 16:39 ` Andrea Arcangeli
2011-05-16 8:42 ` Mel Gorman
2011-05-12 17:51 ` Andrea Arcangeli
2011-05-12 18:03 ` Christoph Lameter
2011-05-12 18:09 ` Andrea Arcangeli
2011-05-12 18:16 ` Christoph Lameter
2011-05-12 18:36 ` James Bottomley
2011-05-12 17:40 ` Andrea Arcangeli
2011-05-12 15:55 ` Pekka Enberg
2011-05-12 18:37 ` James Bottomley
2011-05-12 18:46 ` Christoph Lameter
2011-05-12 19:21 ` James Bottomley
2011-05-12 19:44 ` James Bottomley
2011-05-12 20:04 ` James Bottomley
2011-05-12 20:29 ` Johannes Weiner
2011-05-12 20:31 ` Johannes Weiner
2011-05-12 20:31 ` James Bottomley
2011-05-12 22:04 ` James Bottomley
2011-05-12 22:15 ` Johannes Weiner
2011-05-12 22:58 ` Minchan Kim
2011-05-13 5:39 ` Minchan Kim
2011-05-13 0:47 ` James Bottomley
2011-05-13 4:12 ` James Bottomley
2011-05-13 10:55 ` Mel Gorman
2011-05-13 14:16 ` James Bottomley
2011-05-13 10:30 ` Mel Gorman
2011-05-13 6:16 ` Pekka Enberg
2011-05-13 10:05 ` Mel Gorman
2011-05-12 16:01 ` Christoph Lameter
2011-05-12 16:10 ` Eric Dumazet
2011-05-12 17:37 ` Andrew Morton
2011-05-12 15:45 ` Dave Jones
2011-05-11 21:39 ` [PATCH 0/3] Reduce impact to overall system of SLUB using high-order allocations James Bottomley
2011-05-11 22:28 ` David Rientjes
2011-05-11 22:34 ` James Bottomley
2011-05-12 11:13 ` Pekka Enberg
2011-05-12 13:19 ` Mel Gorman
2011-05-12 14:04 ` James Bottomley
2011-05-12 15:53 ` James Bottomley
2011-05-13 11:25 ` Mel Gorman
2011-05-12 18:04 ` Andrea Arcangeli
2011-05-13 11:24 ` Mel Gorman
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=alpine.DEB.2.00.1105111314310.9346@chino.kir.corp.google.com \
--to=rientjes@google.com \
--cc=James.Bottomley@hansenpartnership.com \
--cc=akpm@linux-foundation.org \
--cc=chris.mason@oracle.com \
--cc=cl@linux.com \
--cc=colin.king@canonical.com \
--cc=hannes@cmpxchg.org \
--cc=jack@suse.cz \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mgorman@suse.de \
--cc=penberg@kernel.org \
--cc=raghu.prabhu13@gmail.com \
--cc=riel@redhat.com \
/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