Messages in this thread | | | Date | Wed, 8 May 2013 19:01:35 +0000 | From | Christoph Lameter <> | Subject | Re: [GIT PULL] SLAB changes for v3.10 |
| |
On Wed, 8 May 2013, Chris Mason wrote:
> > You correctly moved the checks out of the if (!kmalloc_cacheS()) > > condition so that the caches are created properly. > > But if the ordering is required at all, why is it ok to create cache 2 > after cache 6 instead of after cache 7?
The power of two caches are 2^x beginning with KMALLOC_MIN_SHIFT. The non power of two caches were folded into number 1 + 2 since they do not fit into the scheme and they are special cased throughout. This works since the minimal slab cache size is 8 bytes.
> IOW if we can safely do cache 2 after cache 6, why can't we just do both > cache 1 and cache 2 after the loop?
Because the cache creation in SLAB can cause the use of a fractional slab size if kmem_cache_create() thinks its better to put the metadata on a different slab cache (OFF_SLAB type) because data will align better that way. Its weird I know but its due to the way that SLAB aligns data in the page frame.
| |