Re: VM balancing issues on 2.6.13: dentry cache not getting shrunk enough
From: Andrew Morton <hidden>
Date: 2005-09-14 09:36:31
Also in:
lkml
Andi Kleen [off-list ref] wrote:
On Tuesday 13 September 2005 23:59, David Chinner wrote:quoted
On Tue, Sep 13, 2005 at 02:17:52PM +0530, Bharata B Rao wrote:quoted
Second is Sonny Rao's rbtree dentry reclaim patch which is an attempt to improve this dcache fragmentation problem.FYI, in the past I've tried this patch to reduce dcache fragmentation on an Altix (16k pages, 62 dentries to a slab page) under heavy fileserver workloads and it had no measurable effect. It appeared that there was almost always at least one active dentry on each page in the slab. The story may very well be different on 4k page machines, however.I always thought dentry freeing would work much better if it was turned upside down. Instead of starting from the high level dcache lists it could be driven by slab: on memory pressure slab tries to return pages with unused cache objects. In that case it should check if there are only a small number of pinned objects on the page set left, and if yes use a new callback to the higher level user (=dcache) and ask them to free the object.
Considered doing that with buffer_heads a few years ago. It's impossible unless you have a global lock, which bh's don't have. dentries _do_ have a global lock, and we'd be tied to having it for ever more. The shrinking code would have be able to deal with a dentry which is going through destruction by other call paths, so dcache_lock coverage would have to be extended considerably - it would have to cover the kmem_cache_free(), for example. Or we put some i_am_alive flag into the dentry.
The slab datastructures are not completely suited for this right now, but it could be done by using one more of the list_heads in struct page for slab backing pages.
Yes, some help would be needed in the slab code. There's only one list_head in struct page and slab is already using it. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>