Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 16 Mar 2005 00:58:39 -0800 (PST)
From:      Don Lewis <truckman@FreeBSD.org>
To:        phk@phk.freebsd.dk
Cc:        arch@FreeBSD.org
Subject:   Re: Freeing vnodes. 
Message-ID:  <200503160858.j2G8wdG6062341@gw.catspoiler.org>
In-Reply-To: <17570.1110963022@critter.freebsd.dk>

next in thread | previous in thread | raw e-mail | index | archive | help
On 16 Mar, Poul-Henning Kamp wrote:
> In message <20050316084106.GC28328@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.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200503160858.j2G8wdG6062341>