From: Jon Burgess <lkml@jburgess.uklinux.net>
To: Andrew Morton <akpm@osdl.org>
Cc: Jon Burgess <lkml@jburgess.uklinux.net>, linux-kernel@vger.kernel.org
Subject: Re: ext2/3 performance regression in 2.6 vs 2.4 for small interleaved writes
Date: Thu, 12 Feb 2004 20:20:46 +0000 [thread overview]
Message-ID: <402BE01E.2010506@jburgess.uklinux.net> (raw)
In-Reply-To: <20040212015626.48631555.akpm@osdl.org>
Andrew Morton wrote:
> I don't know why the single-stream case would be slower, but the
> two-stream
>
>case is probably due to writeback changes interacting with a weakness in
>the block allocator. 10 megs/sec is pretty awful either way.
>
>
>
10MB/s is just because I did the test on an old machine, it maxes out at
15MB/s with "hdparm -t".
I didn't want to do it on my main PC because I using it to record a TV
program at the time :-)
>Either way, you have intermingled blocks in the files.
>
>
Yes the blocks are intermingled. Thanks for the explanation of the
2.4/2.6 difference.
>Reads will be slower too - you will probably find that reading back a file
>
>
Yes reads are 50% for 2 streams, 25% for 4 etc. 2.4 and 2.6 perform the
same.
I did a debugfs "stat" and it clearly shows the fragmented file blocks.
>You can probably address it quite well within the
>application itself by buffering up a good amount of data for each write()
>call. Maybe a megabyte.
>
>
Writes in the 256kB - 1MB region do avoid the problem. Unfortunately the
way the application is written it makes this tricky to do. It wants to
write out the data in one frame at a time, typically 10 - 50kB.
>XFS will do well at this.
>
>
Yes, both XFS and JFS perform much better. Here is a summary of some
tests done on 2.6, these were done on a faster machine / disk
combination. This was the original test program which also measured the
read speeds, you can get this from http://www.jburgess.uklinux.net/slow.c
The ext2 result is a bit slow, but ext3 is really bad.
Num streams |1 1 |2 2
Filesystem |Write Read |Write Read
--------------|----------------|--------------
Ext2 |27.7 29.17 | 5.89 14.43
ext3-ordered |25.73 29.21 | 0.48 1.1
Reiserfs |25.31 26.25 | 7.47 13.55
JFS |26.27 26.95 |26.92 28.5
XFS |27.51 26.00 |27.35 27.42
>You might be able to improve things significantly on ext2 by increasing
>EXT2_DEFAULT_PREALLOC_BLOCKS by a lot - make it 64 or 128. I don't recall
>anyone trying that.
>
>
I'll give it a go.
>But I must say, a 21x difference is pretty wild. What filesytem was that
>with, and how much memory do you have, and what was the bandwidth of each
>stream, and how much data is the application passing to write()?
>
>
The results were from running the test program I attached to the
original email. It was writing 4kB at a time on a ext2 filesystem. It
tries to write the data in a tight loop, taking as much bandwidth as it
can get.
In the real application it records MPEG2 DVB streams from TV and radio.
The bandwidths are as follows:
TV ~ 500kByte/s, in 10 - 50kB blocks (one MPEG frame at a time).
Radio ~ 24kByte/s, in blocks of around 2-4kB.
The write performance is not too critical. Even at 5MB/s I would still
be able to record 10 TV channels.
I wrote the benchmark primarily to see why the read performance was so
bad. I noticed that when I started moving the files between disks the
transfer rate would be really erratic. Sometimes 40MB/s, sometimes 5MB/s.
The worst case that I found was when I record a TV and radio stream
simultaneously. The data blocks are recorded in a patterm of 1 block of
radio data followed by 20 blocks of TV. When I read back the radio
stream I get only 1:20th of the disk performance (1 - 2 MB/s).
Jon
next prev parent reply other threads:[~2004-02-12 20:21 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-02-11 19:04 ext2/3 performance regression in 2.6 vs 2.4 for small interleaved writes Jon Burgess
2004-02-11 20:28 ` Rik van Riel
2004-02-11 21:02 ` Michael Frank
2004-02-11 21:18 ` Diego Calleja
2004-02-12 2:00 ` Dave Olien
2004-02-12 2:23 ` Andrea Arcangeli
2004-02-12 9:42 ` ext2/3 performance regression in 2.6 vs 2.4 for small interl Giuliano Pochini
2004-02-12 10:15 ` John Bradford
2004-02-12 10:27 ` Nick Piggin
2004-02-12 17:05 ` Michael Frank
2004-02-12 17:18 ` Valdis.Kletnieks
2004-02-12 20:55 ` Helge Hafting
2004-02-13 1:57 ` Jamie Lokier
2004-02-13 2:05 ` Nick Piggin
2004-02-12 14:59 ` Andrea Arcangeli
2004-02-13 12:15 ` ext2/3 performance regression in 2.6 vs 2.4 for small interleaved writes Jon Burgess
2004-02-12 10:40 ` Jon Burgess
2004-02-12 20:17 ` Hans Reiser
2004-02-12 9:56 ` Andrew Morton
2004-02-12 20:20 ` Jon Burgess [this message]
2004-02-13 8:28 ` Juan Piernas Canovas
2004-02-16 17:51 ` Alex Zarochentsev
2004-02-16 20:03 ` Jon Burgess
2004-02-13 12:35 ` Jon Burgess
2004-02-14 15:00 ` Jon Burgess
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=402BE01E.2010506@jburgess.uklinux.net \
--to=lkml@jburgess.uklinux.net \
--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 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.