Subject: Re: disk caching
To: Manuel Bouyer <bouyer@antioche.lip6.fr>
From: Thor Lancelot Simon <tls@rek.tjls.com>
List: tech-kern
Date: 04/14/2000 12:42:22
On Fri, Apr 14, 2000 at 11:42:12AM +0200, Manuel Bouyer wrote:
> On Thu, Apr 13, 2000 at 10:49:19PM -0400, Thor Lancelot Simon wrote:
> > Actually, that's not quite right.  We have the old "sprite" interval
> > flush policy: we flush all buffers -- pages, eventually? -- for a file
> > when the oldest buffer in that file hits 30 seconds.
> > 
> > This is *not* the same as the policy generally considered to be correct
> > since the Mogul paper: flush each buffer when it hits 30 seconds of age.
> > 
> > There are some very common cases which are pathological for the algorithm
> > we have in that its performance degrades to that of the old "flush all
> > buffers every 30 seconds of wall-clock time" method.  For example, if
> > you have a system that does most of its I/O to a single file... you lose.
> 
> Then maybe we need 2 separate buffer queues, one for background flushs
> and one for "urgent" I/O (reads, sync writes, ...) ?

You're describing PURP, kind of -- periodic update with read priority.  With
real old-style periodic update, this turns out to work *worse* for most real
world I/O loads.  I don't know of an implementation of a policy like Mogul's
or ours which gives reads priority.

Real interval periodic update would fix the only real problem with what we
have.  How to do it with UBC is the question.

-- 
Thor Lancelot Simon	                                      tls@rek.tjls.com
	"And where do all these highways go, now that we are free?"