Re: [Bug #13319] Page allocation failures with b43 and p54usb
- From: David Rientjes <rientjes@xxxxxxxxxx>
- Date: Tue, 30 Jun 2009 13:04:35 -0700 (PDT)
On Tue, 30 Jun 2009, Christoph Lameter wrote:
printk(KERN_INFO ": debugging disabled for %s. Use slub_debug=a to "
"enable it blah blah blah\n");
Does that work for you?
Its definitely better.
I don't see how that's different from enabling debugging on all caches
like CONFIG_SLAB_DEBUG_ON currently does and then warning at the time of
slab allocation failure that it may be the result of the debugging
metadata so the user can subsequently prevent it. In other words, if we
use MAX_DEBUG_SIZE as Pekka originally implemented as
(3 * sizeof(void *) + 2 * sizeof(struct track)), do this:
diff --git a/mm/slub.c b/mm/slub.c
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -142,6 +142,11 @@
SLAB_POISON | SLAB_STORE_USER)
/*
+ * The maximum amount of metadata added to a slab when debugging is enabled.
+ */
+#define MAX_DEBUG_SIZE (3 * sizeof(void *) + 2 * sizeof(struct track))
+
+/*
* Set of flags that will prevent slab merging
*/
#define SLUB_NEVER_MERGE (SLAB_RED_ZONE | SLAB_POISON | SLAB_STORE_USER | \
@@ -1561,6 +1566,21 @@ slab_out_of_memory(struct kmem_cache *s, gfp_t gfpflags, int nid)
"default order: %d, min order: %d\n", s->name, s->objsize,
s->size, oo_order(s->oo), oo_order(s->min));
+ if (s->flags & (SLAB_POISON | SLAB_RED_ZONE | SLAB_STORE_USER)) {
+ int min_order;
+
+ /*
+ * Debugging is enabled, which may increase oo_order(s->min), so
+ * warn the user that allocation failures may be avoided if
+ * debugging is enabled for this cache.
+ */
+ min_order = get_order(s->size - MAX_DEBUG_SIZE);
+ if (min_order < oo_order(s->min))
+ printk(KERN_WARNING " %s debugging increased min order "
+ "from %d to %d, use slab_debug=-,%s to disable.",
+ s->name, min_order, oo_order(s->min), s->name);
+ }
+
for_each_online_node(node) {
struct kmem_cache_node *n = get_node(s, node);
unsigned long nr_slabs;
--
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/
- Follow-Ups:
- Re: [Bug #13319] Page allocation failures with b43 and p54usb
- From: Christoph Lameter
- Re: [Bug #13319] Page allocation failures with b43 and p54usb
- References:
- 2.6.31-rc1-git3: Reported regressions 2.6.29 -> 2.6.30
- From: Rafael J. Wysocki
- [Bug #13319] Page allocation failures with b43 and p54usb
- From: Rafael J. Wysocki
- Re: [Bug #13319] Page allocation failures with b43 and p54usb
- From: Larry Finger
- Re: [Bug #13319] Page allocation failures with b43 and p54usb
- From: David Rientjes
- Re: [Bug #13319] Page allocation failures with b43 and p54usb
- From: Pekka Enberg
- Re: [Bug #13319] Page allocation failures with b43 and p54usb
- From: Christoph Lameter
- Re: [Bug #13319] Page allocation failures with b43 and p54usb
- From: Pekka Enberg
- Re: [Bug #13319] Page allocation failures with b43 and p54usb
- From: Christoph Lameter
- 2.6.31-rc1-git3: Reported regressions 2.6.29 -> 2.6.30
- Prev by Date: Re: [RFC] accessibility, speakup, speech synthesis & /sys
- Next by Date: Re: [BUG 2.6.31-rc1] HIGHMEM64G causes hang in PCI init on 32-bit x86
- Previous by thread: Re: [Bug #13319] Page allocation failures with b43 and p54usb
- Next by thread: Re: [Bug #13319] Page allocation failures with b43 and p54usb
- Index(es):
Relevant Pages
|