From: Randy Dunlap <randy.dunlap@oracle.com>
To: Christoph Lameter <clameter@sgi.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Michal Piotrowski <michal.k.k.piotrowski@gmail.com>,
linux-kernel@vger.kernel.org
Subject: Re: 2.6.22-rc2-mm1
Date: Wed, 23 May 2007 18:21:45 -0700 [thread overview]
Message-ID: <20070523182145.7d7f1f7e.randy.dunlap@oracle.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0705231635370.23144@schroedinger.engr.sgi.com>
On Wed, 23 May 2007 16:36:07 -0700 (PDT) Christoph Lameter wrote:
> On Wed, 23 May 2007, Andrew Morton wrote:
>
> > A few words in slub.txt, perhaps?
Thanks for the update. A few nits below.
> SLUB: More documentation
>
> Update documentation to describe how to read a SLUB error report.
> Add slub parameters to Documentation/kernel-parameters.
>
> Signed-off-by: Christoph Lameter <clameter@sgi.com>
>
> ---
> Documentation/kernel-parameters.txt | 37 +++++++++-
> Documentation/vm/slub.txt | 133 +++++++++++++++++++++++++++++++++---
> 2 files changed, 157 insertions(+), 13 deletions(-)
>
> Index: slub/Documentation/kernel-parameters.txt
> ===================================================================
> --- slub.orig/Documentation/kernel-parameters.txt 2007-05-23 15:41:58.000000000 -0700
> +++ slub/Documentation/kernel-parameters.txt 2007-05-23 15:57:07.000000000 -0700
> @@ -1610,6 +1610,37 @@ and is between 256 and 4096 characters.
>
> slram= [HW,MTD]
>
> + slub_debug [MM, SLUB]
> + Enabling slub_debug will allow to determine the culprit
s/will allow/allows/
then
allows _____ (the verb needs an object)
e.g., someone | us | you (clameter@sgi.com :)
> + if slab objects become corrupted. Enabling slub_debug
> + creates guard zones around objects and poisons objects
> + when not in use. Also tracks the last alloc / free.
> + For more information see Documentation/vm/slub.txt.
> +
> + slub_max_order= [MM, SLUB]
> + Determines the maximum allowed order for slabs. Setting
> + this too high may cause fragmentation.
> + For more information see Documentation/vm/slub.txt.
> +
> + slub_min_objects= [M, SLUB]
MM
> + The minimum objects per slab. SLUB will increase the
> + slab order up to slub_max_order to generate a
> + sufficiently big slab to satisfy the number of objects.
> + The higher the number of objects the smaller the overhead
> + of tracking slabs.
> + For more information see Documentation/vm/slub.txt.
> +
> Index: slub/Documentation/vm/slub.txt
> ===================================================================
> --- slub.orig/Documentation/vm/slub.txt 2007-05-23 15:59:05.000000000 -0700
> +++ slub/Documentation/vm/slub.txt 2007-05-23 16:34:20.000000000 -0700
> @@ -1,13 +1,9 @@
> Short users guide for SLUB
> --------------------------
>
> -First of all slub should transparently replace SLAB. If you enable
> -SLUB then everything should work the same (Note the word "should".
> -There is likely not much value in that word at this point).
> -
> The basic philosophy of SLUB is very different from SLAB. SLAB
> requires rebuilding the kernel to activate debug options for all
> -SLABS. SLUB always includes full debugging but its off by default.
> +slab caches. SLUB always includes full debugging but its off by default.
it is
> SLUB can enable debugging only for selected slabs in order to avoid
> an impact on overall system performance which may make a bug more
> difficult to find.
> @@ -76,13 +72,28 @@ of objects.
> Careful with tracing: It may spew out lots of information and never stop if
> used on the wrong slab.
>
> -SLAB Merging
> +Slab merging
> ------------
>
> -If no debugging is specified then SLUB may merge similar slabs together
> +If no debug options are specified then SLUB may merge similar slabs together
> in order to reduce overhead and increase cache hotness of objects.
> slabinfo -a displays which slabs were merged together.
>
> +Slab validation
> +---------------
> +
> +SLUB can validate all object if the kernel was booted with slub_debug. In
> +order to do so you must have the slabinfo tool. Then you can do
> +
> +slabinfo -v
> +
> +which will test all objects. Output will be generated to the syslog.
> +
> +This also works in a more limited way if boot was without slab debug.
> +In that case slabinfo -v will simply tests all reachable objects. Usually
drop: will
> +these are in the cpu slabs and the partial slabs. Full slabs are not
CPU
> +tracked by SLUB in a non debug situation.
> +
> Getting more performance
> ------------------------
>
> @@ -91,9 +102,9 @@ list_lock once in a while to deal with p
> governed by the order of the allocation for each slab. The allocations
> can be influenced by kernel parameters:
>
> -slub_min_objects=x (default 8)
> +slub_min_objects=x (default 4)
> slub_min_order=x (default 0)
> -slub_max_order=x (default 4)
> +slub_max_order=x (default 1)
>
> 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.
> @@ -109,5 +120,107 @@ longer be checked. This is useful to avo
> super large order pages to fit slub_min_objects of a slab cache with
> large object sizes into one high order page.
>
> +SLUB Debug output
> +-----------------
> +
> +Here is a sample of slub debug output:
> +
> +@@@ SLUB kmalloc-8: Restoring redzone (0xcc) from 0xc90f6d28-0xc90f6d2b
> +
...
> +
> +If SLUB encounters a corrupted object then it will perform the following
> +actions
actions:
> +
> +1. Isolation and report of the issue
> +
> +This will be a message in the system log starting with
> +
> +*** SLUB <slab cache affected>: <What went wrong>@<object address>
> +offset=<offset of object into slab> flags=<slabflags>
> +inuse=<objects in use in this slab> freelist=<first free object in slab>
> +
> +2. Report on how the problem was dealt with in order to ensure the continued
> +operation of the system.
> +
> +These are messages in the system log beginning with
> +
> +@@@ SLUB <slab cache affected>: <corrective action taken>
> +
> +
> +In the above sample SLUB found that the Redzone of an active object has
> +been overwritten. Here a string of 8 characters was written into a slab that
> +has the length of 8 characters. However, a 8 character string needs a
> +terminating 0. That zero has overwritten the first byte of the Redzone field.
> +After reporting the details of the issue encountered the @@@ SLUB message
> +tell us that SLUB has restored the redzone to its proper value and then
> +system operations continue.
> +
> +Various types of lines can follow the @@@ SLUB line:
> +
> +Bytes b4 <address> : <bytes>
> + Show a few bytes before the object where the problem was detected.
> + Can be useful if the corruption does not stop with the start of the
> + object.
> +
> +Object <address> : <bytes>
> + The bytes of the object. If the object is inactive then the bytes
> + typically contain poisoning values. Any non poison value shows a
non-poison
> + corruption by a write after free.
> +
> +Redzone <address> : <bytes>
> + The redzone following the object. The redzone is used to detect
> + writes after the object. All bytes should always have the same
> + value. If there is any deviation then it is due to a write after
> + the object boundary.
> +
> +Freepointer
> + The pointer to the next free object in the slab. May become
> + corrupted if overwriting continues after the red zone.
> +
> +Last alloc:
> +Last free:
> + Shows the address from which the object was allocated/freed last.
> + We note the pid, the time and the cpu that did so. This is usually
CPU
> + the most useful information to figure out where things went wrong.
> + Here get_modalias did an kmalloc(8) instead of a kmalloc(9).
> +
> +Filler <address> : <bytes>
> + Unused data to fill up the space in order to get the next object
> + properly aligned. In the debug case we make sure that there are
> + at least 4 bytes of filler. This allow for the detection of writes
> + before the object.
> +
> +Following the filler will be a stackdump. That stackdump describes the
> +location where the error was detected. The cause of the corruption is more
> +likely to be found by looking at the information about the last alloc / free.
How large is the RedZone? Is it a fixed size or does it vary?
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
next prev parent reply other threads:[~2007-05-24 1:17 UTC|newest]
Thread overview: 104+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-23 7:42 2.6.22-rc2-mm1 Andrew Morton
2007-05-23 7:48 ` 2.6.22-rc2-mm1 Andrew Morton
2007-05-23 9:22 ` 2.6.22-rc2-mm1 Rafael J. Wysocki
2007-05-23 14:47 ` 2.6.22-rc2-mm1 Alan Stern
2007-05-23 15:54 ` 2.6.22-rc2-mm1 Andrew Morton
2007-05-23 16:09 ` 2.6.22-rc2-mm1 Oleg Nesterov
2007-05-23 17:00 ` 2.6.22-rc2-mm1 Alan Stern
2007-05-23 16:21 ` 2.6.22-rc2-mm1 Oleg Nesterov
2007-05-23 18:41 ` 2.6.22-rc2-mm1 Alan Stern
2007-05-23 9:47 ` 2.6.22-rc2-mm1 Michal Piotrowski
2007-05-23 17:18 ` 2.6.22-rc2-mm1 Christoph Lameter
2007-05-23 21:05 ` 2.6.22-rc2-mm1 Michal Piotrowski
2007-05-23 22:01 ` 2.6.22-rc2-mm1 Andrew Morton
2007-05-23 22:18 ` 2.6.22-rc2-mm1 Michal Piotrowski
2007-05-23 22:27 ` 2.6.22-rc2-mm1 Christoph Lameter
2007-05-23 22:37 ` 2.6.22-rc2-mm1 Andrew Morton
2007-05-23 23:36 ` 2.6.22-rc2-mm1 Christoph Lameter
2007-05-24 1:21 ` Randy Dunlap [this message]
2007-05-24 2:43 ` 2.6.22-rc2-mm1 Christoph Lameter
2007-05-24 3:00 ` 2.6.22-rc2-mm1 Christoph Lameter
2007-05-24 3:26 ` 2.6.22-rc2-mm1 Randy Dunlap
2007-05-24 7:31 ` 2.6.22-rc2-mm1 Ingo Molnar
2007-05-24 16:40 ` 2.6.22-rc2-mm1 Christoph Lameter
2007-05-24 21:20 ` 2.6.22-rc2-mm1 Christoph Lameter
2007-05-24 21:29 ` 2.6.22-rc2-mm1 Andrew Morton
2007-05-24 21:55 ` 2.6.22-rc2-mm1 Randy Dunlap
2007-05-24 22:35 ` 2.6.22-rc2-mm1 Christoph Lameter
2007-05-24 22:53 ` 2.6.22-rc2-mm1 Andrew Morton
2007-05-30 21:34 ` [PATCH 1/3] hexdump: more output formatting Randy Dunlap
2007-05-30 21:42 ` Christoph Lameter
2007-05-30 21:45 ` Randy Dunlap
2007-05-31 1:45 ` [PATCH 1/3 v2] " Randy Dunlap
2007-05-30 21:56 ` [PATCH 1/3] " Satyam Sharma
2007-05-30 22:03 ` Randy Dunlap
2007-05-30 22:11 ` Satyam Sharma
2007-05-30 22:18 ` Christoph Lameter
2007-05-30 22:41 ` Satyam Sharma
2007-05-30 22:44 ` Randy Dunlap
2007-05-30 22:48 ` Satyam Sharma
2007-05-30 22:59 ` Randy Dunlap
2007-05-30 22:25 ` Randy Dunlap
2007-05-30 22:36 ` Jesper Juhl
2007-05-30 23:04 ` Randy Dunlap
2007-05-30 23:07 ` Jesper Juhl
2007-05-30 21:34 ` [PATCH 2/3 -mm] slub: use lib/hexdump Randy Dunlap
2007-05-30 21:45 ` Christoph Lameter
2007-05-30 21:48 ` Randy Dunlap
2007-05-30 21:51 ` Christoph Lameter
2007-05-30 21:54 ` Randy Dunlap
2007-05-30 22:03 ` Christoph Lameter
2007-05-30 22:06 ` Randy Dunlap
2007-05-31 1:39 ` Randy Dunlap
2007-05-23 22:24 ` 2.6.22-rc2-mm1 Christoph Lameter
2007-05-23 12:01 ` 2.6.22-rc2-mm1 Gabriel C
2007-05-23 16:01 ` 2.6.22-rc2-mm1 Andrew Morton
2007-05-23 15:02 ` 2.6.22-rc2-mm1 William Lee Irwin III
2007-05-23 15:28 ` 2.6.22-rc2-mm1 William Lee Irwin III
2007-05-23 16:08 ` 2.6.22-rc2-mm1 William Lee Irwin III
2007-05-23 16:29 ` 2.6.22-rc2-mm1 William Lee Irwin III
2007-05-23 17:27 ` 2.6.22-rc2-mm1 William Lee Irwin III
2007-05-23 23:17 ` 2.6.22-rc2-mm1 Zan Lynx
2007-05-23 23:27 ` 2.6.22-rc2-mm1 Andrew Morton
2007-05-23 23:40 ` 2.6.22-rc2-mm1 Jiri Kosina
2007-05-24 3:28 ` 2.6.22-rc2-mm1 Dmitry Torokhov
2007-05-24 7:28 ` 2.6.22-rc2-mm1 Jiri Kosina
2007-05-30 14:08 ` [PATCH] Input: i8042 - cleanup of debug code (was Re: 2.6.22-rc2-mm1) Jiri Kosina
2007-05-30 14:27 ` Dmitry Torokhov
2007-05-30 14:30 ` Jiri Kosina
[not found] ` <1180058760.7001.6.camel@oberon.rnd.esoft.com>
2007-05-25 7:23 ` 2.6.22-rc2-mm1 Jiri Kosina
2007-05-23 23:50 ` 2.6.22-rc2-mm1 Andrew Morton
2007-05-24 10:36 ` rmmod e1000 hangs (Was Re: 2.6.22-rc2-mm1) Jeremy Fitzhardinge
2007-05-24 10:47 ` Herbert Xu
2007-05-24 10:54 ` Herbert Xu
2007-05-24 14:44 ` Kok, Auke
2007-05-25 12:54 ` Herbert Xu
2007-05-25 13:04 ` Herbert Xu
2007-05-25 13:32 ` Herbert Xu
2007-05-25 22:12 ` Kok, Auke
2007-05-25 23:48 ` Jeff Garzik
2007-05-26 0:10 ` Herbert Xu
2007-05-25 21:20 ` idle=poll burns my box [was Re: 2.6.22-rc2-mm1] J.A. Magallón
2007-05-25 21:52 ` Andrew Morton
2007-05-26 15:59 ` 2.6.22-rc2-mm1 Tilman Schmidt
2007-05-26 16:01 ` 2.6.22-rc2-mm1 Andrew Morton
2007-05-27 22:16 ` 2.6.22-rc2-mm1 Tilman Schmidt
2007-05-27 22:41 ` 2.6.22-rc2-mm1 Kay Sievers
2007-05-28 17:22 ` 2.6.22-rc2-mm1 Cornelia Huck
2007-05-29 7:56 ` 2.6.22-rc2-mm1 Kay Sievers
2007-05-29 7:25 ` 2.6.22-rc2-mm1 Cornelia Huck
2007-05-29 14:43 ` 2.6.22-rc2-mm1 Matt Mackall
2007-05-29 16:55 ` 2.6.22-rc2-mm1 Tilman Schmidt
2007-05-29 17:25 ` 2.6.22-rc2-mm1 Cornelia Huck
2007-06-01 12:38 ` 2.6.22-rc2-mm1 Greg KH
2007-07-03 8:50 ` 2.6.22-rc2-mm1 Cornelia Huck
2007-07-12 6:00 ` 2.6.22-rc2-mm1 Greg KH
2007-05-28 10:27 ` 2.6.22-rc2-mm1 - a different BUG: at mm/slab.c:777 __find_general_cachep() Valdis.Kletnieks
2007-05-28 10:43 ` Pekka Enberg
2007-05-28 11:12 ` Valdis.Kletnieks
2007-05-29 4:22 ` 2.6.22-rc2-mm1: SLUB Randy Dunlap
2007-05-29 17:13 ` Christoph Lameter
2007-05-29 18:13 ` Randy Dunlap
2007-05-29 18:30 ` Christoph Lameter
2007-05-29 18:32 ` Christoph Lameter
2007-05-29 18:59 ` Randy Dunlap
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=20070523182145.7d7f1f7e.randy.dunlap@oracle.com \
--to=randy.dunlap@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=clameter@sgi.com \
--cc=linux-kernel@vger.kernel.org \
--cc=michal.k.k.piotrowski@gmail.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
Powered by JetHome