Re: dentry bloat.
From: Maneesh Soni
Date:  Tue May 11 2004 - 08:03:43 EST
On Sat, May 08, 2004 at 08:30:55PM +0000, Dipankar Sarma wrote:
> On Sat, May 08, 2004 at 12:13:09PM -0700, Linus Torvalds wrote:
> > On Sat, 8 May 2004, Andrew Morton wrote:
> > > 
> > > I think we can simply take ->d_lock a bit earlier in __d_lookup.  That will
> > > serialise against d_move(), fixing the problem which you mention, and also
> > > makes d_movecount go away.
> > 
> > If you do that, RCU basically loses most of it's meaning.
> > 
> > You'll be taking a lock for - and dirtying in the cache - every single
> > dentry on the hash chain, which is pretty much guaranteed to be slower
> > than just taking the dcache_lock _once_, even if that one jumps across 
> > CPU's a lot.
> > 
> > In other words, no, I don't think that's a good idea. We really want to
> > take the dentry lock only after we're pretty sure we have the right
> > dentry. Otherwise the dentry chains will be bouncing from CPU to CPU all
> > the time.
> 
> Exactly. Taking ->d_lock for every dentry while traversing the hash
> chain should be avoided. As such, atomic operations on that path
> are getting costly.
We can see this happening in the following numbers taken using dcachebench*
gathered on 2-way P4 Xeon 2.4MHz SMP box with 4.5GB RAM. The benchmark was run
with the following parameters and averaged over 10 runs.
./dcachebench -p 32 -b testdir
		Average	microseconds/iterations 	Std. Deviation
		(lesser is better)
2.6.6		10204					161.5
2.6.6-mm1	10571					51.5
*dcachebench is a microbenchmark written by Bill Hartner and is available at
http://www-124.ibm.com/developerworks/opensource/linuxperf/dcachebench/dcachebench.html
-- 
Maneesh Soni
Linux Technology Center, 
IBM Software Lab, Bangalore, India
email: maneesh@xxxxxxxxxx
Phone: 91-80-25044999 Fax: 91-80-25268553
T/L : 9243696
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/