diff options
author | David Rientjes <rientjes@google.com> | 2009-07-07 03:14:14 -0400 |
---|---|---|
committer | Pekka Enberg <penberg@cs.helsinki.fi> | 2009-07-10 02:52:55 -0400 |
commit | fa5ec8a1f66f3c2a3af723abcf8085509c9ee682 (patch) | |
tree | be8e06f8ace38ed40ec2af4465dd1fffbc4b4f09 /Documentation/vm | |
parent | c2cc49a2f8a479dde96a599646d30b6cc9dbed78 (diff) |
slub: add option to disable higher order debugging slabs
When debugging is enabled, slub requires that additional metadata be
stored in slabs for certain options: SLAB_RED_ZONE, SLAB_POISON, and
SLAB_STORE_USER.
Consequently, it may require that the minimum possible slab order needed
to allocate a single object be greater when using these options. The
most notable example is for objects that are PAGE_SIZE bytes in size.
Higher minimum slab orders may cause page allocation failures when oom or
under heavy fragmentation.
This patch adds a new slub_debug option, which disables debugging by
default for caches that would have resulted in higher minimum orders:
slub_debug=O
When this option is used on systems with 4K pages, kmalloc-4096, for
example, will not have debugging enabled by default even if
CONFIG_SLUB_DEBUG_ON is defined because it would have resulted in a
order-1 minimum slab order.
Reported-by: Larry Finger <Larry.Finger@lwfinger.net>
Tested-by: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Christoph Lameter <cl@linux-foundation.org>
Signed-off-by: David Rientjes <rientjes@google.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Diffstat (limited to 'Documentation/vm')
-rw-r--r-- | Documentation/vm/slub.txt | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/Documentation/vm/slub.txt b/Documentation/vm/slub.txt index bb1f5c6e28b3..510917ff59ed 100644 --- a/Documentation/vm/slub.txt +++ b/Documentation/vm/slub.txt | |||
@@ -41,6 +41,8 @@ Possible debug options are | |||
41 | P Poisoning (object and padding) | 41 | P Poisoning (object and padding) |
42 | U User tracking (free and alloc) | 42 | U User tracking (free and alloc) |
43 | T Trace (please only use on single slabs) | 43 | T Trace (please only use on single slabs) |
44 | O Switch debugging off for caches that would have | ||
45 | caused higher minimum slab orders | ||
44 | - Switch all debugging off (useful if the kernel is | 46 | - Switch all debugging off (useful if the kernel is |
45 | configured with CONFIG_SLUB_DEBUG_ON) | 47 | configured with CONFIG_SLUB_DEBUG_ON) |
46 | 48 | ||
@@ -59,6 +61,14 @@ to the dentry cache with | |||
59 | 61 | ||
60 | slub_debug=F,dentry | 62 | slub_debug=F,dentry |
61 | 63 | ||
64 | Debugging options may require the minimum possible slab order to increase as | ||
65 | a result of storing the metadata (for example, caches with PAGE_SIZE object | ||
66 | sizes). This has a higher liklihood of resulting in slab allocation errors | ||
67 | in low memory situations or if there's high fragmentation of memory. To | ||
68 | switch off debugging for such caches by default, use | ||
69 | |||
70 | slub_debug=O | ||
71 | |||
62 | In case you forgot to enable debugging on the kernel command line: It is | 72 | In case you forgot to enable debugging on the kernel command line: It is |
63 | possible to enable debugging manually when the kernel is up. Look at the | 73 | possible to enable debugging manually when the kernel is up. Look at the |
64 | contents of: | 74 | contents of: |