tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: serious performance regression in .41



christos%zoulas.com@localhost (Christos Zoulas) wrote:
> Since my last upgrade (I think the last working has been .24), I've been
> getting very bad performance running "sync" and choppy interactive
> response. It seems something bad happens with locking when there are too
> many objects in the buffer cache, because rebooting makes the problem go
> away for a while. Here's the lockstat output of sync (which in my 16GB
> machine takes ~11sec):

The new vfs_vnode_iterator*() mechanism acquires and releases mntvnode_lock
on every iteration cycle; see vfs_vnode_iterator_next().  That seems like a
significant overhead if there are many vnodes.  In your case, that seems to
be more than 150k calls!  As a side effect, such increased overhead probably
results in a higher contention against vfs_insmntque() and / or concurrent
sync/vflush() calls.  I think the old behaviour should be restored, that is:
keep the mntvnode_lock while iterating and drop it only when we find a vnode
to sync or recycle.

-- 
Mindaugas


Home | Main Index | Thread Index | Old Index