Re: [PATCH] SLUB use cmpxchg_local

Christoph Lameter
2007-08-21T21:08:46Z

On Tue, 21 Aug 2007, Mathieu Desnoyers wrote:

> - Fixed an erroneous test in slab_free() (logic was flipped from the
> original code when testing for slow path. It explains the wrong
> numbers you have with big free).

If you look at the numbers that I posted earlier then you will see that
even the measurements without free were not up to par.

> It applies on top of the
> "SLUB Use cmpxchg() everywhere" patch.

Which one is that?

> | slab.git HEAD slub (min-max) | cmpxchg_local slub
> kmalloc(8) | 190 - 201 | 83
> kfree(8) | 351 - 351 | 363
> kmalloc(64) | 224 - 245 | 115
> kfree(64) | 389 - 394 | 397
> kmalloc(16384)| 713 - 741 | 724
> kfree(16384) | 843 - 856 | 843
>
> Therefore, there seems to be a repeatable gain on the kmalloc fast path
> (more than twice faster). No significant performance hit for the kfree
> case, but no gain neither, same for large kmalloc, as expected.

There is a consistent loss on slab_free it seems. The 16k numbers are
irrelevant since we do not use slab_alloc/slab_free due to the direct pass
through patch but call the page allocator directly. That also explains
that there is no loss there.

The kmalloc numbers look encouraging. I will check to see if I can
reproduce it once I sort out the patches.