public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Andrea Arcangeli <andrea@suse.de>
To: Andrew Morton <akpm@digeo.com>
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: Mon, 11 Nov 2002 05:39:41 +0100	[thread overview]
Message-ID: <20021111043941.GB30193@dualathlon.random> (raw)
In-Reply-To: <3DCF308E.166FAADF@digeo.com>

On Sun, Nov 10, 2002 at 08:22:38PM -0800, Andrew Morton wrote:
> 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.

from your description it seems what will happen is:

	queue 3 5 6 7 8 9

I don't see why you say it won't do that. the whole point of the patch
to put reads at or near the head, and you say 3 won't be put at the
head if only 5 writes are pending. Or maybe your bypasses "6 writes"
means the other way around, that you put the read as the seventh entry
in the queue if there are 6 writes pending, is it the case?

> > > > 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.

yes, it should be worthwhile to potentially decrease a little the global
throughput to increase significantly the read latency, I'm not against
that, but before I would care about that I prefer to get a limit on the
size of the queue in bytes, not in requests, that is a generic issue for
writes and read-async-io too, it's a task against task fairness/latency
matter, not specific to reads, but it should help read latency
visibly too. In any case the two things are orthogonal, if the queue is
smaller read-latency will do even better.

> > 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.

sure I know the problem with sync 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.

actually it's probably much worse tha a 10 times ratio since the writer
is going to use big requests, while the reader is probably seeking with
<=4k requests.

> 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.


Andrea

  reply	other threads:[~2002-11-11  4:33 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
2002-11-11  4:39                   ` Andrea Arcangeli [this message]
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=20021111043941.GB30193@dualathlon.random \
    --to=andrea@suse.de \
    --cc=akpm@digeo.com \
    --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