[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <Pine.LNX.4.64.0706111205330.19316@schroedinger.engr.sgi.com>
Date: Mon, 11 Jun 2007 12:07:38 -0700 (PDT)
From: Christoph Lameter <clameter@....com>
To: Eric Sesterhenn / Snakebyte <snakebyte@....de>
cc: linux-kernel@...r.kernel.org
Subject: Re: profiling likely/unlikely in slub.c
On Mon, 11 Jun 2007, Eric Sesterhenn / Snakebyte wrote:
>
> +unlikely | 40969931| 6228144 __slab_free()@:mm/slub.c@...6
> +unlikely | 47198075| 0 __slab_free()@:mm/slub.c@...9
> -likely | 0| 47198075 slab_free()@:mm/slub.c@...0
> +unlikely | 47280864| 0 __slab_alloc()@:mm/slub.c@...5
> +unlikely | 26857| 0 new_slab()@:mm/slub.c@...7
> +unlikely | 47280864| 0 slab_alloc()@:mm/slub.c@...7
>
> three of the unlikely cases are caused by "if (unlikely(SlabDebug(page)))"
> if SLUB_DEBUG is turned off, it really is unlikely, since SlabDebug()
> always returns 0, if SLUB_DEBUG is turned on it is likely (not sure if there are
> cases where it can return 0) therefore it makes sense to change this
> to likely for the SLUB_DEBUG case.
>
> The following patch changes the SlabDebug() functions to defines, so gcc
> can easily optimize the if away entirely and changes the unlikely() to a
> likely().
>
> Remaining problem is, that if likely/unlikely profiling is turned on,
> gcc does not optimize away a likely(0), and they still show up in the
> stats... guess heisenbug is involved in this :-)
There is a fundamental misunderstanding here to think that SLUB_DEBUG
would enable debugging. Not true. Debugging is enabled by booting with
"slub_debug".
It is true that SlabDebug() is always false if !CONFIG_SLUB_DEBUG. That is
only the case for embedded systems that want to conserve memory.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists