summaryrefslogtreecommitdiffstats
path: root/mm-slub-do-not-wake-kswapd-for-slubs-speculative-high-order-allocations.patch
diff options
context:
space:
mode:
authorKyle McMartin <kyle@redhat.com>2011-05-11 16:20:10 -0400
committerKyle McMartin <kyle@redhat.com>2011-05-11 16:20:16 -0400
commita7e4f1ccd5f84c722b5f69e08488294e2f875509 (patch)
tree1263894fd528cf278cdb6f5da1025052161a1a97 /mm-slub-do-not-wake-kswapd-for-slubs-speculative-high-order-allocations.patch
parent9b1caead9ae2dfa0652653fb1026567a71bcbf55 (diff)
downloadkernel-a7e4f1ccd5f84c722b5f69e08488294e2f875509.tar.gz
kernel-a7e4f1ccd5f84c722b5f69e08488294e2f875509.tar.xz
kernel-a7e4f1ccd5f84c722b5f69e08488294e2f875509.zip
pull in some SLUB fixes from Mel Gorman for testing
Diffstat (limited to 'mm-slub-do-not-wake-kswapd-for-slubs-speculative-high-order-allocations.patch')
-rw-r--r--mm-slub-do-not-wake-kswapd-for-slubs-speculative-high-order-allocations.patch46
1 files changed, 46 insertions, 0 deletions
diff --git a/mm-slub-do-not-wake-kswapd-for-slubs-speculative-high-order-allocations.patch b/mm-slub-do-not-wake-kswapd-for-slubs-speculative-high-order-allocations.patch
new file mode 100644
index 000000000..2010a1c13
--- /dev/null
+++ b/mm-slub-do-not-wake-kswapd-for-slubs-speculative-high-order-allocations.patch
@@ -0,0 +1,46 @@
+From owner-linux-mm@kvack.org Wed May 11 11:29:50 2011
+From: Mel Gorman <mgorman@suse.de>
+To: Andrew Morton <akpm@linux-foundation.org>
+Subject: [PATCH 1/3] mm: slub: Do not wake kswapd for SLUBs speculative high-order allocations
+Date: Wed, 11 May 2011 16:29:31 +0100
+Message-Id: <1305127773-10570-2-git-send-email-mgorman@suse.de>
+
+To avoid locking and per-cpu overhead, SLUB optimisically uses
+high-order allocations and falls back to lower allocations if they
+fail. However, by simply trying to allocate, kswapd is woken up to
+start reclaiming at that order. On a desktop system, two users report
+that the system is getting locked up with kswapd using large amounts
+of CPU. Using SLAB instead of SLUB made this problem go away.
+
+This patch prevents kswapd being woken up for high-order allocations.
+Testing indicated that with this patch applied, the system was much
+harder to hang and even when it did, it eventually recovered.
+
+Signed-off-by: Mel Gorman <mgorman@suse.de>
+---
+ mm/slub.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/mm/slub.c b/mm/slub.c
+index 9d2e5e4..98c358d 100644
+--- a/mm/slub.c
++++ b/mm/slub.c
+@@ -1170,7 +1170,7 @@ static struct page *allocate_slab(struct kmem_cache *s, gfp_t flags, int node)
+ * Let the initial higher-order allocation fail under memory pressure
+ * so we fall-back to the minimum order allocation.
+ */
+- alloc_gfp = (flags | __GFP_NOWARN | __GFP_NORETRY) & ~__GFP_NOFAIL;
++ alloc_gfp = (flags | __GFP_NOWARN | __GFP_NORETRY | __GFP_NO_KSWAPD) & ~__GFP_NOFAIL;
+
+ page = alloc_slab_page(alloc_gfp, node, oo);
+ if (unlikely(!page)) {
+--
+1.7.3.4
+
+--
+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>
+