Re: stochastic fair queueing in the elevator [Re: [BENCHMARK] 2.4.20-ck3 / aa / rmap with contest]

Andrew Morton
2003-02-10T04:51:18Z

Jakob Oestergaard <jakob@unthought.net> wrote:
>
> On Sun, Feb 09, 2003 at 08:33:43PM -0800, Andrew Morton wrote:
> > David Lang <david.lang@digitalinsight.com> wrote:
> > >
> > > note that issuing a fsync should change all pending writes to 'syncronous'
> > > as should writes to any partition mounted with the sync option, or writes
> > > to a directory with the S flag set.
> >
> > We know, at I/O submission time, whether a write is to be waited upon.
> > That's in writeback_control.sync_mode.
> >
> > That, combined with an assumption that "all reads are synchronous" would
> > allow the outgoing BIOs to be appropriately tagged.
>
> This may be a terribly stupid question, if so pls. just tell me :)
>
> I assume read-ahead requests go elsewhere? Or do we assume that someone
> is waiting for them as well?

Yes, they are treated the same. If any part of the request is to be waited
upon then the whole request should be treated as synchronous.

And if no part of a readahead request is waited upon, we should never have
submited it anyway.

> If we assume they are synchronous, that would be rather unfair
> especially on multi-user systems - and the 90% accuracy that Rik
> suggested would seem exaggerated to say the least (accuracy would be
> more like 10% on a good day).

The simplified assumption that "reads are waited upon and writes are not" is
highly accurate.

I want to see the Linux I/O scheduler work as well as possible with workloads
which make that assumption 100% true. Once we have done that, then we can
start worrying about corner cases like AIO, O_SYNC, truncate, etc.