Re: [PATCH 08/29] mm: kmem_cache_objs_to_pages()
From: Peter Zijlstra <hidden>
Date: 2007-02-22 09:33:54
Also in:
linux-mm, lkml
On Wed, 2007-02-21 at 17:47 +0200, Pekka Enberg wrote:
Hi Peter, On 2/21/07, Peter Zijlstra [off-list ref] wrote:quoted
Provide a method to calculate the number of pages needed to store a given number of slab objects (upper bound when considering possible partial and free slabs).So how does this work? You ask the slab allocator how many pages you need for a given number of objects and then those pages are available to it via the page allocator? Can other users also dip into those reserves?
Everybody (ab)using PF_MEMALLOC or the new __GFP_EMERGENCY.
I would prefer we simply have an API for telling the slab allocator to keep certain number of pages in a reserve for a cache rather than exposing internals such as object size to rest of the world.
Keeping the free pages in the page allocator is good for the buddy system. Although you could probably implement a reserve interface without actually claiming the pages. However, doing it like so separates the making of the reserve from the actual kmem_cache object, I can just carry a sum of pages around instead of a list of kmem_cache pointers. I calculate a potential reserve, I might never actually commit to making (and using) the reserve. Also, I don't see what internals are exposed, kmem_cache is still private to slab.c.