Re: [resent PATCH] Re: very slow parallel read performance

Alex Bligh - linux-kernel
2001-08-27T14:42:11Z

--On Monday, 27 August, 2001 4:31 PM +0200 Daniel Phillips
<phillips@bonn-fries.net> wrote:

> - Readahead cache is important enough to get its own lru list.
> We know it's a fifo so don't have to waste cycles scanning/aging.
> Having a distinct list makes the accounting trivial, vs keeping
> readahead on the active list for example.

A nit: I think it's a MRU list you want. If you are reading
ahead (let's have caps for a page that has been used for reading,
as well as read from the disk, and lowercase for read-ahead that
has not been used):
ABCDefghijklmnopq
| |
read disk
ptr head
and you want to reclaim memory, you want to drop (say) 'pq'
to get
ABCDefghijklmno
for two reasons: firstly because 'efg' etc. are most likely
to be used NEXT, and secondly because the diskhead is nearer
'pq' when you (inevitably) have to read it again.

This seems even more imporant when considering multiple streams,
as if you drop the least recently 'used' (i.e. read in from disk),
you will instantly create a thrashing storm.

And an idea: when dropping read-ahead pages, you might be better
dropping many readahed pages for a single stream, rather than
hitting them all equally, else they will tend to run out of
readahead in sync.

--
Alex Bligh