Re: Page allocator: Single Zone optimizations

Christoph Lameter
2006-11-06T17:00:10Z

On Mon, 6 Nov 2006, Andi Kleen wrote:

> > Because acceses to the structure can occur after kfree. The RCU
> > implementation only delays the destruction of the slab. Locks are always
> > in a definite state regardless if the object is in use or not.
>
> Only objects that have been used at least once can be still visible. And
> those would be still constructed of course -- just after the kmem_cache_alloc,
> not inside. For those that have never been used it shouldn't matter.

Constructors are only called on allocation of the slab, not on
kmem_cache_alloc. And you are right: It does not matter for those that
have never been used.

> > I think this is an attempt to avoid having to initialize pmds/pgds after
> > intializaiton and also the use of the slab caches keeps the cache lines
> > hot.
>
> Ah, we got __GFP_ZERO for that, although it never quite did the work
> completely. I'm not sure it helps a lot anyways

Not exactly. The implementation in the i386 arch code avoids the
__GFP_ZERO by relying on empty pgd/pmds be zero. But you could copy Robin
Holt's implementation via page lists from ia64 that does the saem. It
avoids the constructor/destructors and slab use. It is cleaner and
probably faster.