Martin J. Bligh described at OLS the "blunderbuss effect", i.e. the 
inefficiency of the dentry cache shrinker at freeing whole pages, since we 
could leave (worst-case) one dentry per page because it's at the end of the 
LRU list.

Pinned dentries (in first place libfs ones, but he also includes directories 
one - I think they are just hard to free, not really pinned) are allocated 
from the common dentry_cache, i.e. mixed with normal ones - why don't we fix 
that?

It seems that adding an (optional) flag to a new __d_alloc (with d_alloc 
becoming its wrapper) would be enough, since dentries are always allocated 
directly by filesystems (either on lookup or on creation of the pinned 
dentry). Or call it d_alloc_lively().

Also, it seems that the slab allocator willl allocate objects at fixed 
locations inside a page (even with page colouring, colour_offset is fixed 
per-slab and saved)*, once that slab has been allocated... so if we add a 
"DCACHE_FREED" flag and zero slabs content on alloc (at least for this slab), 
we could maybe enumerate all dentries in a page and try to free them, to 
finally free the whole slab.

* Otherwise this problem could probably be fixed some way.
-- 
Inform me of my mistakes, so I can keep imitating Homer Simpson's "Doh!".
Paolo Giarrusso, aka Blaisorblade (Skype ID "PaoloGiarrusso", ICQ 215621894)
http://www.user-mode-linux.org/~blaisorblade


        

        
                
___________________________________ 
Yahoo! Mail: gratis 1GB per i messaggi e allegati da 10MB 
http://mail.yahoo.it

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to