Re: [PATCH] SLUB use cmpxchg_local

Mathieu Desnoyers
2007-08-27T21:51:53Z

* Christoph Lameter (clameter@sgi.com) wrote:
> On Mon, 27 Aug 2007, Mathieu Desnoyers wrote:
>
> > > a clean solution source code wise. It also minimizes the interrupt holdoff
> > > for the non-cmpxchg_local arches. However, it means that we will have to
> > > disable interrupts twice for the slow path. If that is too expensive then
> > > we need a different solution.
> > >
> >
> > cmpxchg_local is not used on the slow path... ?
>
> Right.
>
> > Did you meant:
> >
> > it means that we will have to disable preemption _and_ interrupts on the
> > fast path for non-cmpxchg_local arches ?
>
> We would have to disable preemption and interrupts once on the fast path.
> The interrupt holdoff would just be a couple of instructions.
>

Right.

> The slow path would require disable preemption and two interrupt disables.
>

If the slow path have to call new_slab, then yes. But it seems that not
every slow path must call it, so for the other slow paths, only one
interrupt disable would be required.

> Question is if this makes sense performance wise. If not then we may have
> to look at more complicated schemes.
>

Yep, such as the arch_have_cmpxchg() macro that I proposed, but it
really hurts my eyes... :(

Mathieu