tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: serious performance regression in .41
On May 22, 6:23pm, campbell+netbsd-tech-kern%mumble.net@localhost (Taylor R
Campbell) wrote:
-- Subject: Re: serious performance regression in .41
| Date: Thu, 22 May 2014 16:47:10 +0000 (UTC)
| From: christos%astron.com@localhost (Christos Zoulas)
|
| I am testing this now:
|
| http://www.netbsd.org/~christos/vnode_iterator.diff
|
| vfs_vnode_iterator_next should take the interlock and check for
| VI_CLEAN|VI_CHANGING (and perhaps vwait if VI_CHANGING) before calling
| the selector. VI_CLEAN vnodes (i.e., vnodes the system has called
| VOP_RECLAIM on to release) shouldn't be exposed outside vfs_vnode.c.
|
| There's another small problem which is that access to v_data is
| generally not really correct without holding the vnode lock (depends
| on the file system, but for most of them). So, e.g., the test of
| inode update flags in ffs_sync_selector is sketchy. However, this is
| probably safe for now, and is what we've been doing all along.
|
| As a longer-term alternative, perhaps we ought to have a separate
| queue for dirty vnodes (i.e., vnodes with pending stuff to write back
| to disk). Then sync(2) wouldn't pay for vnodes it needn't actually
| mess with.
I am taking the interlock now, but I am not checking the vnode flags.
It is a simple change to make centrally now. I see the performance back
to where it was before the vnode iterator refactoring. I had a small
bug in the previous, so fetch it again.
christos
Home |
Main Index |
Thread Index |
Old Index