Freeing vnodes.

Don Lewis truckman at FreeBSD.org
Wed Mar 16 00:58:49 PST 2005


On 16 Mar, Poul-Henning Kamp wrote:
> In message <20050316084106.GC28328 at cirb503493.alcatel.com.au>, Peter Jeremy wri
> tes:
>>On Tue, 2005-Mar-15 11:11:32 -0800, Matthew Dillon wrote:
>>>    syncer:	  I've always wanted to rewrite the syncer to be per-mount
>>>		  or per-physical-device so it could sync out to multiple
>>>		  physical devices simultaniously. 
>>
>>My current bitch with syncer is that it can run for up to around 8msec
>>(on an AMD XP-1800).  This screws up interrupt latency.

This is likely to be the MNT_VNODE_FOREACH loop in VOP_SYNC().  A lot of
CPU cycles can be wasted even when there is no real work to do because
the list of cached vnodes for the file system has to be traversed each
time.  This loop should be skipped in the MNT_LAZY case, and the inode
timestamp updates should be handled by putting them on the syncer
worklist.

> And throw thousands of I/O requests on the queue at once, which screws
> up I/O performance.

That is also a problem with the loop in VOP_SYNC().  This behaviour is
very noticeable when a machine modifies a lot of files.



More information about the freebsd-arch mailing list