Subject: Re: UBC status
To: None <eeh@netbsd.org>
From: Manuel Bouyer <bouyer@antioche.lip6.fr>
List: tech-kern
Date: 09/26/1999 16:42:05
On Sat, Sep 25, 1999 at 02:10:21PM -0700, Eduardo E. Horvath wrote:
> [...]
> > 	- Implement an IO prioritisation scheme (with some
> > 	  heuristics based on drive head location etc) which places
> > 	  interactive operations over trickle page-outs
> 
> Interesting, but rather complicated since it requires extremely good
> sharing of information between the disk and HBA drivers and the
> pagedaemon.

I got some though on this when I noticed that a 'sync' with a 20M buffer cache
could hang the system for several seconds, and also for APM (to prevent
time updates from waking up the disk). I though about implementing
several queues of buffer, with priorities:
- higth priotity queue, where all 'interractive' buffers go: read, write of
  metadata (that is, writes without 'B_ASYNC', writes of data after a 'sync'
  or 'fsync' (a sync would move all dirty buffers to this queue ?).
- medium-priority queue, where all B_ASYNC dirty buffer would go. Maybe a
  kernel thread should manage this one, to make a better use of the I/O
  bandwidth.
- a very low priority queue, for non-critical data (typically access time
  update). This queue would be run only after one of the 2 other are, to
  be sure to not spin up the disk only for this.

This could also help with tagget command queuing, where tagged commands need
to have some ordering information to keep filesystem consistency.

Of course all this need much more though. Yet another fun project I don't have
time to start :)

--
Manuel Bouyer, LIP6, Universite Paris VI.           Manuel.Bouyer@lip6.fr
--