From: Jens Axboe <axboe@suse.de>
To: Peter Osterlund <petero2@telia.com>
Cc: Andrew Morton <akpm@osdl.org>, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] Speed up the cdrw packet writing driver
Date: Sat, 28 Aug 2004 15:07:58 +0200 [thread overview]
Message-ID: <20040828130757.GA2397@suse.de> (raw)
In-Reply-To: <m3u0unwplj.fsf@telia.com>
On Sat, Aug 28 2004, Peter Osterlund wrote:
> > > The situation happened when I dumped >1GB of data to a DVD+RW disc on
> > > a 1GB RAM machine. For some reason, the number of pending bio's didn't
> > > go much larger than 200000 (ie 400MB) even though it could probably
> > > have gone to 800MB without swapping. The machine didn't feel
> > > unresponsive during this test.
> >
> > But it very well could have. If you dive into the bio mempool (or the
> > biovec pool) and end up having most of those reserved entries built up
> > for execution half an hour from now, you'll stall (or at least hinder)
> > other processes from getting real work done.
> >
> > Latencies are horrible, I don't think it makes sense to allow more than
> > a few handful of pending zone writes in the packet writing driver.
>
> I ran some tests copying files to a 4x DVD+RW disc for different
> values of the maximum number of allowed bios in the queue. I used
> kernel 2.6.8.1 with the packet writing patches from the -mm tree. All
> tests used the udf filesystem.
>
> Test 1: dd-ing 250MB from /dev/zero:
>
> 1024: 53.2s
> 8192: 54.6s
> inf: 51.2s
Out of how many runs did you average those numbers? Look close enough to
be normal variance, so not conclusive I'd say.
> Test 2: Writing 29 files, total size 120MB (Source files cached in RAM
> before the test started):
>
> 1024: 71.6s
> 8192: 81.1s
> 32768: 52.7s
> 49152: 31.4s
> 65536: 26.6s
> inf: 27.7s
>
> Test 3: Writing 48 files, total size 196MB (Source files cached in RAM
> before the test started):
>
> 65536: 65.8s
> inf: 40.2s
>
> Test 4: Repeat of test 3:
>
> 65536: 67.4s
> inf: 41.8s
>
> The conclusion is that when writing one big file, it doesn't hurt to
> limit the number of pending bios, but when writing many files,
> limiting the amount of queued data to "only" 128MB makes the write
> performance 60% slower.
I'd rather say that the above is indicative of a layout (or other)
problem with the file system. 64K bio queue must be at least 256MB
pending in itself, how can inf even make a difference there? You would
gain so much more performance by fixing the fs instead of attempting to
build up hundreds of megabytes of pending data, I think that's a really
bad idea (not just a suboptimal solution, also extremely bad for the
rest of the system).
> Note that the reduced I/O performance will also reduce the lifetime of
> the disc, because some sectors will be written more often than
> necessary.
Surely, yes.
> + while (pd->bio_queue_size >= 8192)
> + blk_congestion_wait(WRITE, HZ / 5);
> +
This is not really how you'd want to do it. When you reach that
threshold, mark the queue congested and get pdflush to leave you alone
instead. Then clear the congestion when you get below a certain number
again. For this test I don't think it should make a difference, though.
--
Jens Axboe
next prev parent reply other threads:[~2004-08-28 13:08 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-08-14 19:13 [PATCH] Speed up the cdrw packet writing driver Peter Osterlund
2004-08-23 11:43 ` Jens Axboe
2004-08-23 16:07 ` Peter Osterlund
2004-08-24 20:29 ` Jens Axboe
2004-08-24 21:04 ` Peter Osterlund
2004-08-24 21:47 ` Andrew Morton
2004-08-24 21:57 ` Lee Revell
2004-08-29 13:52 ` Alan Cox
2004-08-24 22:03 ` Peter Osterlund
2004-08-24 22:56 ` Andrew Morton
2004-08-25 5:38 ` Peter Osterlund
2004-08-25 6:50 ` Jens Axboe
2004-08-28 9:59 ` Peter Osterlund
2004-08-28 13:07 ` Jens Axboe [this message]
2004-08-28 18:42 ` Peter Osterlund
2004-08-28 19:45 ` Andrew Morton
2004-08-28 20:57 ` Peter Osterlund
2004-08-28 21:23 ` Andrew Morton
2004-08-29 12:17 ` Peter Osterlund
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=20040828130757.GA2397@suse.de \
--to=axboe@suse.de \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=petero2@telia.com \
/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