From: Nick Piggin <piggin@cyberone.com.au>
To: Chris Mason <mason@suse.com>
Cc: Andrea Arcangeli <andrea@suse.de>,
Marc-Christian Petersen <m.c.p@wolk-project.de>,
Jens Axboe <axboe@suse.de>,
Marcelo Tosatti <marcelo@conectiva.com.br>,
Georg Nikodym <georgn@somanetworks.com>,
lkml <linux-kernel@vger.kernel.org>,
Matthias Mueller <matthias.mueller@rz.uni-karlsruhe.de>
Subject: Re: [PATCH] io stalls
Date: Fri, 27 Jun 2003 19:45:19 +1000 [thread overview]
Message-ID: <3EFC122F.3090406@cyberone.com.au> (raw)
In-Reply-To: <1056677984.20904.181.camel@tiny.suse.com>
Chris Mason wrote:
>On Thu, 2003-06-26 at 21:21, Nick Piggin wrote:
>
>
>>>Very true. But get_request latency is the minimum amount of time a
>>>single read is going to wait (in 2.4.x anyway), and that is what we need
>>>to focus on when we're trying to fix interactive performance.
>>>
>>>
>>The read situation is different to write. To fill the read queue,
>>you need queue_nr_requests / 2-3 (for readahead) reading processes
>>to fill the queue, more if the reads are random.
>>If this kernel is being used interactively, its not our fault we
>>might not give quite as good interactive performance. I'm sure
>>the fileserver admin would rather take the tripled bandwidth ;)
>>
>>That said, I think a lot of interactive programs will want to do
>>more than 1 request at a time anyway.
>>
>>
>
>My intuition agrees with yours, but if this is true then andrea's old
>elevator-lowlatency patch alone is enough, and we don't need q->full at
>all. Users continued to complain of bad latencies even with his code
>applied.
>
Didn't that still have the starvation issues in get_request that
my patch addressed though? This batching is needed due to the
strict FIFO behaviour that my "q->full" thing did.
>
>>From a practical point of view his old code is the same as the batch
>wakeup code for get_request latencies and provides good throughput.
>There are a few cases where batch wakeup has shorter overall latencies,
>but I don't think people were in those heavy workloads while they were
>complaining of stalls in -aa.
>
>
>>>>Second, mergeable doesn't mean anything if your request size only
>>>>grows to say 128KB (IDE). I saw tiobench 256 sequential writes on IDE
>>>>go from ~ 25% peak throughput to ~70% (4.85->14.11 from 20MB/s disk)
>>>>
>>>>
>>>Well, play around with raw io, my box writes at roughly disk speed with
>>>128k synchronous requests (contiguous writes).
>>>
>>>
>>Yeah, I'm not talking about request overhead - I think a 128K sized
>>request is just fine. But when there are 256 threads writing, with
>>FIFO method, 128 threads will each have 1 request in the queue. If
>>they are sequential writers, each request will probably be 128K.
>>That isn't enough to get good disk bandwidth. The elevator _has_ to
>>make a suboptimal decision.
>>
>>With batching, say 8 processes have 16 sequential requests on the
>>queue each. The elevator can make good choices.
>>
>
>I agree here too, it just doesn't match the user reports we've been
>getting in 2.4 ;-) If 2.5 can dynamically allocate requests now and
>then you can get much better results with io contexts/dynamic wakeups,
>but I can't see how to make it work in 2.4 without larger backports.
>
>So, the way I see things, we've got a few choices.
>
>1) do nothing. 2.6 isn't that far off.
>
>2) add elevator-lowlatency without q->full. It solves 90% of the
>problem
>
>3) add q->full as well and make it the default. Great latencies, not so
>good throughput. Add userland tunables so people can switch.
>
>4) back port some larger chunk of 2.5 and find a better overall
>solution.
>
>I vote for #3, don't care much if q->full is on or off by default, as
>long as we make an easy way for people to set it.
>
5) include the "q->full" starvation fix; add the concept of a
queue owner, the batching process.
I'm a bit busy at the moment and so I won't test this, unfortunately.
I would prefer that if something like #5 doesn't get in, then nothing
be done for .22 unless its backed up by a few decent benchmarks. But
its not my call anyway.
Cheers,
Nick
next prev parent reply other threads:[~2003-06-27 9:32 UTC|newest]
Thread overview: 109+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-05-29 0:55 Linux 2.4.21-rc6 Marcelo Tosatti
2003-05-29 1:22 ` Con Kolivas
2003-05-29 5:24 ` Marc Wilson
2003-05-29 5:34 ` Riley Williams
2003-05-29 5:57 ` Marc Wilson
2003-05-29 7:15 ` Riley Williams
2003-05-29 8:38 ` Willy Tarreau
2003-05-29 8:40 ` Willy Tarreau
2003-06-03 16:02 ` Marcelo Tosatti
2003-06-03 16:13 ` Marc-Christian Petersen
2003-06-04 21:54 ` Pavel Machek
2003-06-05 2:10 ` Michael Frank
2003-06-03 16:30 ` Michael Frank
2003-06-03 16:53 ` Matthias Mueller
2003-06-03 16:59 ` Marc-Christian Petersen
2003-06-03 17:03 ` Marc-Christian Petersen
2003-06-03 18:02 ` Anders Karlsson
2003-06-03 21:12 ` J.A. Magallon
2003-06-03 21:18 ` Marc-Christian Petersen
2003-06-03 17:23 ` Michael Frank
2003-06-04 14:56 ` Jakob Oestergaard
2003-06-04 4:04 ` Marc Wilson
2003-05-29 10:02 ` Con Kolivas
2003-05-29 18:00 ` Georg Nikodym
2003-05-29 19:11 ` -rc7 " Marcelo Tosatti
2003-05-29 19:56 ` Krzysiek Taraszka
2003-05-29 20:18 ` Krzysiek Taraszka
2003-06-04 18:17 ` Marcelo Tosatti
2003-06-04 21:41 ` Krzysiek Taraszka
2003-06-04 22:37 ` Alan Cox
2003-06-04 10:22 ` Andrea Arcangeli
2003-06-04 10:35 ` Marc-Christian Petersen
2003-06-04 10:42 ` Jens Axboe
2003-06-04 10:46 ` Marc-Christian Petersen
2003-06-04 10:48 ` Andrea Arcangeli
2003-06-04 11:57 ` Nick Piggin
2003-06-04 12:00 ` Jens Axboe
2003-06-04 12:09 ` Andrea Arcangeli
2003-06-04 12:20 ` Jens Axboe
2003-06-04 20:50 ` Rob Landley
2003-06-04 12:11 ` Nick Piggin
2003-06-04 12:35 ` Miquel van Smoorenburg
2003-06-09 21:39 ` [PATCH] io stalls (was: -rc7 Re: Linux 2.4.21-rc6) Chris Mason
2003-06-09 22:19 ` Andrea Arcangeli
2003-06-10 0:27 ` Chris Mason
2003-06-10 23:13 ` Chris Mason
2003-06-11 0:16 ` Andrea Arcangeli
2003-06-11 0:44 ` Chris Mason
2003-06-09 23:51 ` [PATCH] io stalls Nick Piggin
2003-06-10 0:32 ` Chris Mason
2003-06-10 0:47 ` Nick Piggin
2003-06-10 1:48 ` Robert White
2003-06-10 2:13 ` Chris Mason
2003-06-10 23:04 ` Robert White
2003-06-11 0:58 ` Chris Mason
2003-06-10 3:22 ` Nick Piggin
2003-06-10 21:17 ` Robert White
2003-06-11 0:40 ` Nick Piggin
2003-06-11 0:33 ` [PATCH] io stalls (was: -rc7 Re: Linux 2.4.21-rc6) Andrea Arcangeli
2003-06-11 0:48 ` [PATCH] io stalls Nick Piggin
2003-06-11 1:07 ` Andrea Arcangeli
2003-06-11 0:54 ` [PATCH] io stalls (was: -rc7 Re: Linux 2.4.21-rc6) Chris Mason
2003-06-11 1:06 ` Andrea Arcangeli
2003-06-11 1:57 ` Chris Mason
2003-06-11 2:10 ` Andrea Arcangeli
2003-06-11 12:24 ` Chris Mason
2003-06-11 17:42 ` Chris Mason
2003-06-11 18:12 ` Andrea Arcangeli
2003-06-11 18:27 ` Chris Mason
2003-06-11 18:35 ` Andrea Arcangeli
2003-06-12 1:04 ` [PATCH] io stalls Nick Piggin
2003-06-12 1:12 ` Chris Mason
2003-06-12 1:29 ` Andrea Arcangeli
2003-06-12 1:37 ` Andrea Arcangeli
2003-06-12 2:22 ` Chris Mason
2003-06-12 2:41 ` Nick Piggin
2003-06-12 2:46 ` Andrea Arcangeli
2003-06-12 2:49 ` Nick Piggin
2003-06-12 2:51 ` Nick Piggin
2003-06-12 2:52 ` Nick Piggin
2003-06-12 3:04 ` Andrea Arcangeli
2003-06-12 2:58 ` Andrea Arcangeli
2003-06-12 3:04 ` Nick Piggin
2003-06-12 3:12 ` Andrea Arcangeli
2003-06-12 3:20 ` Nick Piggin
2003-06-12 3:33 ` Andrea Arcangeli
2003-06-12 3:48 ` Nick Piggin
2003-06-12 4:17 ` Andrea Arcangeli
2003-06-12 4:41 ` Nick Piggin
2003-06-12 16:06 ` Chris Mason
2003-06-12 16:16 ` Nick Piggin
2003-06-25 19:03 ` Chris Mason
2003-06-25 19:25 ` Andrea Arcangeli
2003-06-25 20:18 ` Chris Mason
2003-06-27 8:41 ` write-caches, I/O stalls: MUST-FIX (was: [PATCH] io stalls) Matthias Andree
2003-06-26 5:48 ` [PATCH] io stalls Nick Piggin
2003-06-26 11:48 ` Chris Mason
2003-06-26 13:04 ` Nick Piggin
2003-06-26 13:18 ` Nick Piggin
2003-06-26 15:55 ` Chris Mason
2003-06-27 1:21 ` Nick Piggin
2003-06-27 1:39 ` Chris Mason
2003-06-27 9:45 ` Nick Piggin [this message]
2003-06-27 12:41 ` Chris Mason
2003-06-12 11:57 ` Chris Mason
2003-06-04 10:43 ` -rc7 Re: Linux 2.4.21-rc6 Andrea Arcangeli
2003-06-04 11:01 ` Marc-Christian Petersen
2003-06-03 19:45 ` Config issue (CONFIG_X86_TSC) " Paul
2003-06-03 20:18 ` Jan-Benedict Glaw
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=3EFC122F.3090406@cyberone.com.au \
--to=piggin@cyberone.com.au \
--cc=andrea@suse.de \
--cc=axboe@suse.de \
--cc=georgn@somanetworks.com \
--cc=linux-kernel@vger.kernel.org \
--cc=m.c.p@wolk-project.de \
--cc=marcelo@conectiva.com.br \
--cc=mason@suse.com \
--cc=matthias.mueller@rz.uni-karlsruhe.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.