Date: Fri, 28 Jan 2011 23:18:34 +0200 From: Gleb Kurtsou <gleb.kurtsou@gmail.com> To: Ivan Voras <ivoras@freebsd.org> Cc: freebsd-hackers@freebsd.org, Dan Nelson <dnelson@allantgroup.com> Subject: Re: Namecache lock contention? Message-ID: <20110128211834.GA84881@tops.skynet.lt> In-Reply-To: <AANLkTinCbhY5N%2BpuAs9gXT3WOKmPtHCZrb_BwWu__nV6@mail.gmail.com> References: <ihuhav$qso$1@dough.gmane.org> <20110128152505.GP75125@dan.emsphone.com> <AANLkTinCbhY5N%2BpuAs9gXT3WOKmPtHCZrb_BwWu__nV6@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On (28/01/2011 18:20), Ivan Voras wrote: > On 28 January 2011 16:25, Dan Nelson <dnelson@allantgroup.com> wrote: > > > My guess would be: > > > > kern/vfs_cache.c:151 static struct rwlock cache_lock; > > kern/vfs_cache.c:152 RW_SYSINIT(vfscache, &cache_lock, "Name Cache"); > > > > The CACHE_*LOCK() macros.c in vfs_cache use cache_lock, so you've got lots > > of possible contention points. procstat -ka and/or dtrace might help you > > determine exactly where. > > I'm new with dtrace so I tried this: > > lockstat:::rw-block > { > @traces[stack()] = count(); > } > > with these results: > > http://ivoras.net/stuff/rw-block.txt > > It's informative because most of the traces are namecache-related. As > suspected, the most blocking occurs in stat(). > > As this is a rwlock I'd interpret it as waiting for a write lock to be > lifted so the readers can acquire it, but I need to confirm this as > there's a lot of things that can in theory be stat()ed here. > > I'm going to continue investigating with dtrace but I'd appreciate > pointers on how to make the output more useful (like including > filenames from stat()). You could try replacing rwlock with plain mutex to check if there are priority propagation issues among readers/writers. SX locks should also work but would likely to be a considerable performance regression. Finding out home much activity is there outside of storage/a/b/file (sessions storage) could also be helpful.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110128211834.GA84881>