From: Peter Osterlund <petero2@telia.com>
To: Andrew Morton <akpm@osdl.org>
Cc: linux-kernel@vger.kernel.org
Subject: Re: 2.6.9-rc1-mm3
Date: 05 Sep 2004 10:59:27 +0200 [thread overview]
Message-ID: <m3brglay6o.fsf@telia.com> (raw)
In-Reply-To: <20040903093727.5810bb7d.akpm@osdl.org>
[-- Attachment #1: Type: text/plain, Size: 3921 bytes --]
Andrew Morton <akpm@osdl.org> writes:
> Peter Osterlund <petero2@telia.com> wrote:
> >
> > One problem that does remain though, is that when dumping huge amounts
> > of data to a CD or DVD disc (so that you get memory pressure), the
> > effective writing speed of other block devices (like IDE hard disks)
> > is reduced to the same speed as the packet device.
> >
> > I have posted a patch that fixes this problem by limiting the amount
> > of writeback data in the packet driver, but unfortunately it makes the
> > effective writing speed of the packet device suffer a lot. The proper
> > fix is probably to improve the filesystem and/or VM code to start I/O
> > operations in sequential order a lot more often than it currently
> > does.
>
> If you decrease /proc/sys/vm/dirty_ratio and dirty_background_ratio to much
> smaller levels, does that fix things up?
No, it seems to slow the packet device down without improving the hard
disk speed.
I wrote a patch that logs what I/O operations are received by the
packet driver. For my test case, which does
time cp -av /testdata /udf ; time sync
where /testdata contains 120MB of data in 29 files, the I/O pattern
looks like this:
10:06:03 421 - 1905
10:06:03 1906 - 2482
10:06:03 4255 - 6031
10:06:03 6032 - 6320
10:06:03 8514 - 10277
10:06:03 10278 - 10566
10:06:03 13773 - 15821
10:06:03 16520 - 18568
10:06:03 19021 - 21068
10:06:03 21069 - 23117
10:06:03 23208 - 24869
10:06:03 24870 - 25286
10:06:03 27120 - 28714
10:06:03 28715 - 29195
10:06:03 30307 - 32355
10:06:03 32732 - 34704
10:06:03 34705 - 34801
10:06:03 36905 - 38953
10:06:03 39390 - 41283
10:06:03 41284 - 41444
10:06:03 43663 - 45008
10:06:03 45009 - 45713
10:06:03 46719 - 48678
10:06:03 48679 - 48775
10:06:03 51004 - 53052
10:06:03 53497 - 55545
10:06:03 2482 - 4254
10:06:03 55581 - 55869
10:06:03 6320 - 8368
10:06:03 57527 - 59529
10:06:03 10566 - 10630
10:06:03 59530 - 61578
10:06:03 15821 - 16466
10:06:03 16474 - 16519
10:06:03 18568 - 19020
10:06:03 23117 - 23207
10:06:03 25286 - 26118
10:06:03 29195 - 30306
10:06:03 32355 - 32731
10:06:03 34801 - 35377
10:06:03 38953 - 39389
10:06:03 41444 - 43076
10:06:03 45713 - 46718
10:06:03 48775 - 49831
10:06:03 53052 - 53496
10:06:03 55545 - 55579
10:06:03 55869 - 57469
10:06:03 8368 - 8513
10:06:03 10630 - 12550
10:06:03 61578 - 62086
10:06:03 26118 - 27119
10:06:03 35377 - 35921
10:06:03 43076 - 43662
10:06:04 49831 - 51003
10:06:04 57469 - 57526
10:06:04 12550 - 12806
10:06:04 35921 - 36904
10:06:04 12806 - 13772
10:06:04 273 - 278
10:06:04 417 - 418
10:06:04 419 - 421
10:06:04 1905 - 1906
10:06:04 4254 - 4255
10:06:04 6031 - 6032
10:06:04 8513 - 8514
10:06:04 10277 - 10278
10:06:04 13772 - 13773
10:06:04 16519 - 16520
10:06:04 19020 - 19021
10:06:04 21068 - 21069
10:06:04 23207 - 23208
10:06:04 24869 - 24870
10:06:04 27119 - 27120
10:06:04 28714 - 28715
10:06:04 30306 - 30307
10:06:04 32731 - 32732
10:06:04 34704 - 34705
10:06:04 36904 - 36905
10:06:04 39389 - 39390
10:06:04 41283 - 41284
10:06:04 43662 - 43663
10:06:04 45008 - 45009
10:06:04 46718 - 46719
10:06:04 48678 - 48679
10:06:04 51003 - 51004
10:06:04 53496 - 53497
10:06:04 55579 - 55581
10:06:04 57526 - 57527
10:06:31 59529 - 59530
10:06:31 273 - 274
See attachment for a graph of this data. The X axis corresponds to the
I/O submission order and the Y axis corresponds to the sector numbers.
[-- Attachment #2: IO_pattern.png --]
[-- Type: image/png, Size: 5503 bytes --]
[-- Attachment #3: Type: text/plain, Size: 1426 bytes --]
diff -puN drivers/block/pktcdvd.c~packet-io-log drivers/block/pktcdvd.c
--- linux/drivers/block/pktcdvd.c~packet-io-log 2004-09-05 10:35:24.697900200 +0200
+++ linux-petero/drivers/block/pktcdvd.c 2004-09-05 10:35:24.701899592 +0200
@@ -896,6 +896,27 @@ static inline void pkt_set_state(struct
pkt->state = state;
}
+static void pkt_io_log(struct bio *bio)
+{
+ static sector_t start, stop;
+ typedef unsigned long long ull;
+
+ if (bio) {
+ if (stop == bio->bi_sector) {
+ stop = stop + bio_sectors(bio);
+ } else {
+ if (start != stop)
+ printk("pkt: %lld - %lld\n", (ull)(start >> 2), (ull)(stop >> 2));
+ start = bio->bi_sector;
+ stop = start + bio_sectors(bio);
+ }
+ } else {
+ if (start != stop)
+ printk("pkt: %lld - %lld\n", (ull)(start >> 2), (ull)(stop >> 2));
+ start = stop = 0;
+ }
+}
+
/*
* Scan the work queue to see if we can start a new packet.
* returns non-zero if any work was done.
@@ -949,6 +970,8 @@ try_next_bio:
spin_unlock(&pd->lock);
if (!bio) {
VPRINTK("handle_queue: no bio\n");
+ if (list_empty(&pd->cdrw.pkt_active_list))
+ pkt_io_log(NULL);
return 0;
}
@@ -2197,6 +2220,8 @@ static int pkt_make_request(request_queu
}
}
+ pkt_io_log(bio);
+
/*
* If we find a matching packet in state WAITING or READ_WAIT, we can
* just append this bio to that packet.
_
--
Peter Osterlund - petero2@telia.com
http://w1.894.telia.com/~u89404340
next prev parent reply other threads:[~2004-09-05 8:59 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-09-03 8:48 2.6.9-rc1-mm3 Andrew Morton
2004-09-03 7:43 ` [PATCH] 2.6.9-rc1-mm3 i8042 compilation Bernhard Rosenkraenzer
2004-09-03 9:47 ` Andrew Morton
2004-09-03 9:20 ` 2.6.9-rc1-mm3 Russell King
2004-09-03 9:42 ` 2.6.9-rc1-mm3 Christoph Hellwig
2004-09-03 12:15 ` 2.6.9-rc1-mm3 Zwane Mwaikambo
2004-09-03 12:25 ` 2.6.9-rc1-mm3 Christoph Hellwig
2004-09-03 12:48 ` 2.6.9-rc1-mm3 Zwane Mwaikambo
2004-09-06 12:55 ` [PATCH 2.6.9-rc1-mm3] [m32r] Change from EXPORT_SYMBOL_NOVERS to EXPORT_SYMBOL Hirokazu Takata
2004-09-06 13:11 ` Sam Ravnborg
2004-09-06 13:55 ` Russell King
2004-09-06 13:52 ` EXPORT_SYMBOL_NOVERS (was: Re: 2.6.9-rc1-mm3) Geert Uytterhoeven
2004-09-06 15:30 ` Zwane Mwaikambo
2004-09-06 19:09 ` [PATCH 0/4] " Geert Uytterhoeven
2004-09-08 14:18 ` Zwane Mwaikambo
2004-09-06 19:09 ` [PATCH 1/4] " Geert Uytterhoeven
2004-09-06 19:09 ` [PATCH 2/4] " Geert Uytterhoeven
2004-09-06 19:10 ` [PATCH 3/4] " Geert Uytterhoeven
2004-09-06 19:10 ` [PATCH 4/4] " Geert Uytterhoeven
2004-09-03 9:54 ` 2.6.9-rc1-mm3 Christoph Hellwig
2004-09-06 12:40 ` [PATCH 2.6.9-rc1-mm3] [m32r] Modify sys_ipc() to remove useless iBCS2 support code Hirokazu Takata
2004-09-06 17:03 ` Christoph Hellwig
2004-09-06 21:02 ` Andrew Morton
2004-09-06 21:08 ` Christoph Hellwig
2004-09-07 8:02 ` Arnd Bergmann
2004-09-03 9:57 ` 2.6.9-rc1-mm3 Christoph Hellwig
2004-09-03 11:08 ` 2.6.9-rc1-mm3 Hirokazu Takata
2004-09-03 12:08 ` 2.6.9-rc1-mm3 Zwane Mwaikambo
2004-09-03 15:15 ` 2.6.9-rc1-mm3 Norberto Bensa
2004-09-03 16:27 ` 2.6.9-rc1-mm3 Andrew Morton
2004-09-03 17:20 ` 2.6.9-rc1-mm3 Norberto Bensa
2004-09-05 19:59 ` 2.6.9-rc1-mm3 Norberto Bensa
2004-09-05 22:32 ` 2.6.9-rc1-mm3 Andrew Morton
2004-09-05 22:42 ` 2.6.9-rc1-mm3 Nathan Scott
2004-09-03 15:59 ` 2.6.9-rc1-mm3 Peter Osterlund
2004-09-03 16:37 ` 2.6.9-rc1-mm3 Andrew Morton
2004-09-05 8:59 ` Peter Osterlund [this message]
2004-09-03 17:23 ` 2.6.9-rc1-mm3 William Lee Irwin III
2004-09-03 17:51 ` 2.6.9-rc1-mm3 Paulo Marques
2004-09-03 18:02 ` 2.6.9-rc1-mm3 William Lee Irwin III
2004-09-05 22:33 ` 2.6.9-rc1-mm3 Paulo Marques
2004-09-07 10:54 ` 2.6.9-rc1-mm3 Paulo Marques
2004-09-03 17:56 ` 2.6.9-rc1-mm3 Andre Eisenbach
2004-09-03 18:12 ` 2.6.9-rc1-mm3 William Lee Irwin III
2004-09-03 18:19 ` 2.6.9-rc1-mm3 Andre Eisenbach
2004-09-03 20:33 ` 2.6.9-rc1-mm3 Andrew Morton
2004-09-03 21:15 ` 2.6.9-rc1-mm3 Andre Eisenbach
2004-09-03 17:57 ` 2.6.9-rc1-mm3 (compile stats) John Cherry
2004-09-03 21:53 ` 2.6.9-rc1-mm3 William Lee Irwin III
2004-09-03 22:25 ` 2.6.9-rc1-mm3 William Lee Irwin III
2004-09-04 10:21 ` [patch] 2.6.9-rc1-mm3: char/riscom8.c doesn't compile Adrian Bunk
2004-09-04 17:52 ` [patch] 2.6.9-rc1-mm3: cdrom/cdu31a.c " Adrian Bunk
2004-09-08 22:29 ` 2.6.9-rc1-mm3 Dominik Karall
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=m3brglay6o.fsf@telia.com \
--to=petero2@telia.com \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
/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