From: Andrew Morton <akpm@digeo.com>
To: Andrea Arcangeli <andrea@suse.de>
Cc: Rik van Riel <riel@conectiva.com.br>,
Con Kolivas <conman@kolivas.net>,
linux kernel mailing list <linux-kernel@vger.kernel.org>,
marcelo@conectiva.com.br
Subject: Re: [BENCHMARK] 2.4.{18,19{-ck9},20rc1{-aa1}} with contest
Date: Sun, 10 Nov 2002 20:22:38 -0800 [thread overview]
Message-ID: <3DCF308E.166FAADF@digeo.com> (raw)
In-Reply-To: 20021111040642.GA30193@dualathlon.random
Andrea Arcangeli wrote:
>
> On Sun, Nov 10, 2002 at 08:03:01PM -0800, Andrew Morton wrote:
> > Andrea Arcangeli wrote:
> > >
> > > the slowdown happens in this case:
> > >
> > > queue 5 6 7 8 9
> > >
> > > insert read 3
> > >
> > > queue 3 5 6 7 8 9
> >
> > read-latency will not do that.
>
> So what will it do? Must do something very much like what I described or
> it is a noop period. Please elaborate.
If a read was not merged with another read on the tail->head walk
the read will be inserted near the head. The head->tail walk bypasses
all reads, six (default) writes and then inserts the new read.
It has the shortcoming that earlier reads may be walked past in the
tail->head phase. It's a three-liner to prevent that but I was never
able to demonstrate any difference.
> >
> > > However I think even read-latency is more a workarond to a problem in
> > > the I/O queue dimensions.
> >
> > The problem is the 2.4 algorithm. If a read is not mergeable or
> > insertable it is placed at the tail of the queue. Which is the
> > worst possible place it can be put because applications wait on
> > reads, not on writes.
>
> O_SYNC/-osync waits on writes too, so are you saying writes must go to
> the head because of that?
It has been discussed: boost a request to head-of-queue when a thread
starts to wait on a buffer/page which is inside that request.
But we don't care about synchronous writes. As long as we don't
starve them out completely, optimise the (vastly more) common case.
> reads should be not too bad at the end too if
> only the queue wasn't that oversized when the merging is at its maximum.
> Fix the oversizing of the queue, then read-latency will matter much
> less.
Think about two threads. One is generating a stream of writes and
the other is trying to read a file. The reader needs to read the
directory, the inode, the first data blocks, the first indirect and
then some more data blocks. That's at least three synchronous reads.
Even if those reads are placed just three requests from head-of-queue,
the reader will make one tenth of the progress of the writer.
And the current code places those reads 64 requests from head-of-queue.
When the various things which were congesting write queueing were fixed
in the 2.5 VM a streaming write was slowing such read operations down by
a factor of 4000.
next prev parent reply other threads:[~2002-11-11 4:15 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-11-09 2:00 [BENCHMARK] 2.4.{18,19{-ck9},20rc1{-aa1}} with contest Con Kolivas
2002-11-09 2:36 ` Andrew Morton
2002-11-09 3:26 ` Con Kolivas
2002-11-09 4:15 ` Andrew Morton
2002-11-09 5:12 ` Con Kolivas
2002-11-09 11:21 ` Jens Axboe
2002-11-09 13:09 ` Con Kolivas
2002-11-09 13:35 ` Stephen Lord
2002-11-09 13:54 ` Jens Axboe
2002-11-09 21:12 ` Arador
2002-11-10 2:26 ` Andrea Arcangeli
2002-11-09 21:53 ` Con Kolivas
2002-11-10 10:09 ` Jens Axboe
2002-11-10 16:23 ` Andrea Arcangeli
2002-11-11 4:26 ` Con Kolivas
2002-11-10 10:12 ` Kjartan Maraas
2002-11-10 10:17 ` Jens Axboe
2002-11-10 16:27 ` Andrea Arcangeli
2002-11-09 11:20 ` Jens Axboe
2002-11-10 2:44 ` Andrea Arcangeli
2002-11-10 3:56 ` Matt Reppert
2002-11-10 9:58 ` Con Kolivas
2002-11-10 10:06 ` Jens Axboe
2002-11-10 16:21 ` Andrea Arcangeli
2002-11-10 16:20 ` Andrea Arcangeli
2002-11-10 19:32 ` Rik van Riel
2002-11-10 20:10 ` Andrea Arcangeli
2002-11-10 20:52 ` Andrew Morton
2002-11-10 21:05 ` Rik van Riel
2002-11-11 1:54 ` Andrea Arcangeli
2002-11-11 4:03 ` Andrew Morton
2002-11-11 4:06 ` Andrea Arcangeli
2002-11-11 4:22 ` Andrew Morton [this message]
2002-11-11 4:39 ` Andrea Arcangeli
2002-11-11 5:10 ` Andrew Morton
2002-11-11 5:23 ` Andrea Arcangeli
2002-11-11 7:58 ` William Lee Irwin III
2002-11-11 13:56 ` Rik van Riel
2002-11-11 13:45 ` Rik van Riel
2002-11-11 14:09 ` Jens Axboe
2002-11-11 15:48 ` Andrea Arcangeli
2002-11-11 15:43 ` Andrea Arcangeli
2002-11-10 20:56 ` Andrew Morton
2002-11-11 1:08 ` Andrea Arcangeli
-- strict thread matches above, loose matches on Subject: below --
2002-11-09 3:44 Dieter Nützel
2002-11-09 3:54 ` Con Kolivas
2002-11-09 4:02 ` Dieter Nützel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3DCF308E.166FAADF@digeo.com \
--to=akpm@digeo.com \
--cc=andrea@suse.de \
--cc=conman@kolivas.net \
--cc=linux-kernel@vger.kernel.org \
--cc=marcelo@conectiva.com.br \
--cc=riel@conectiva.com.br \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox