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