Messages in this thread | | | Date | Tue, 12 Jun 2007 10:52:01 +0800 | From | Fengguang Wu <> | Subject | Re: [PATCH 1/9] readahead: introduce PG_readahead |
| |
Hi Rusty,
On Tue, Jun 12, 2007 at 11:04:54AM +1000, Rusty Russell wrote: > On Thu, 2007-05-17 at 06:47 +0800, Fengguang Wu wrote: > > plain text document attachment (mm-introduce-pg_readahead.patch) > > Introduce a new page flag: PG_readahead. > > > > It acts as a look-ahead mark, which tells the page reader: > > Hey, it's time to invoke the read-ahead logic. For the sake of I/O pipelining, > > don't wait until it runs out of cached pages! > > Hi Fengguang! > > I've been reading your patches, and I have some (possibly dumb!) > questions. > > For this patch: why set a bit in the page, rather than keep a value > inside the "struct file_ra_state"?
Good question. I should have documented it in the patch ;)
The short answer: there can be multiple read streams per fd, i.e. interleaved reads.
file_ra_state can not easily track all of the streams. Solaris zfs does it by managing a list in struct dnode. While PG_readahead plus the context based readahead(http://lkml.org/lkml/2006/11/15/54) makes another solution. The two solutions are comparable in complexity. The context based readahead is a bit more feature rich: it is sensible to memory pressure, and supports an unlimited number of streams. Note that random reads can be regarded as a huge number of one-shot streams, which can interfere with zfs's list-based readahead states badly.
Fengguang
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |