Subject: Re: Deleting files
To: None <port-alpha@netbsd.org, tech-kern@netbsd.org>
From: Thor Lancelot Simon <tls@rek.tjls.com>
List: port-alpha
Date: 03/18/2003 11:42:52
On Tue, Mar 18, 2003 at 08:09:24AM -0700, Jason Thorpe wrote:
> 
> On Tuesday, March 18, 2003, at 07:47  AM, Pavel Cahyna wrote:
> 
> >>stable these days, although there are clearly problems with
> >>trickle-sync that can lead to choppy performance in the face of a lot
> >>of file system writes.
> >
> >Please, what's trickle-sync?
> 
> Trickle-sync is a method of "gradually" flushing data from the page 
> cache to disk.  The idea is that instead of a big burst every minute or 
> so, you get a constant "trickle" of data out to disk.
> 
> Unfortunately, the current code seems to no trickle very well; I often 
> see a big burst (accompanied by a pause in application performance) 
> when e.g. a vnode needs to be reclaimed (which requires that its 
> buffers be flushed out to disk).  This big burst means that the vnode 
> has a lot of dirty pages associated with it, implying that the data 
> hasn't been trickle-sync'd out effectively.

This is one of the known problems with the Sprite variation on the
trickle-sync algorithm, which is what the softdep code uses.  The issue
is that *all* pending writes for a file are flushed when the *oldest*
write for a given file reaches the trickle-sync age.  This has performance
similar to normal "trickle sync" except in some pathological cases that
are not so uncommon as they might intuitively seem...

True trickle sync, with UBC, would presumably maintain a list of pages to 
be cleaned at each second in the future, rather than a list of files to 
have all their pages cleaned.  Insertion into that list might be a nice
opportunity to precluster I/O, too.