Messages in this thread | | | Date | Wed, 6 Oct 2004 18:28:24 +0530 | From | Maneesh Soni <> | Subject | Re: dentry bloat. |
| |
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@in.ibm.com 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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |