linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Chris Mason <chris.mason@oracle.com>
To: "Morten P.D. Stevens" <mstevens@imt-systems.com>
Cc: "linux-btrfs@vger.kernel.org" <linux-btrfs@vger.kernel.org>,
	"miaox@cn.fujitsu.com" <miaox@cn.fujitsu.com>
Subject: Re: Poor creat/delete files performance
Date: Wed, 18 Aug 2010 10:25:41 -0400	[thread overview]
Message-ID: <20100818142541.GP5854@think> (raw)
In-Reply-To: <7222A6B8ACA37D4AA1AC37810C43E8A80F5FC5C5@mail.corp.imt-systems.com>

On Wed, Aug 18, 2010 at 12:49:05PM +0200, Morten P.D. Stevens wrote:
> Hi,
> 
> i can confirm this issue with poor create and delete performance.
> 
> For example with unpacking and deleting the linux kernel:
> 
> Btrfs:
> 
> [root@fc13 btrfs]# time tar xfj linux-2.6.36-rc1.tar.bz2
> 
> real    0m18.794s
> user    0m12.045s
> sys     0m8.241s
> [root@fc13 btrfs]# time rm -rf linux-2.6.36-rc1
> 
> real    0m2.156s
> user    0m0.028s
> sys     0m2.118s
> 
> ext4:
> 
> [root@fc13 ext4]# time tar xfj linux-2.6.36-rc1.tar.bz2
> 
> real    0m13.140s
> user    0m9.074s
> sys     0m6.327s
> [root@fc13 ext4]# time rm -rf linux-2.6.36-rc1
> 
> real    0m0.781s
> user    0m0.031s
> sys     0m0.735s
> 
> In all of our benchmarks, ext4 is still faster than btrfs.

For this kind of benchmark, I use my compilebench program.  We want to
time just the file creation and not how long it takes to uncompress or
read in the .tar.gz from the disk.

The results from 2.6.35 on a single sata drive are not good for ext4 at
all.  Btrfs is on par with where it always has been, but I'm
experimenting with other benchmarks to find the regression.  Basically
when you are benchmarking this kind of thing you want to make sure
you're benchmarking how quickly you can write to the disk, and not to
cache.

compilebench simulates this by creating files with the same size and
names as what you get from untarring kernel trees, and then it has a
phase where it creates files with the same size and names as the .o
files from compiling the kernel.

Btrfs:

# ./compilebench -i 30 --makej
creating /mnt/default
using working directory /mnt/default, 30 intial dirs 100 runs
native unpatched native-0 222MB in 1.76 seconds (126.35 MB/s)
native patched native-0 109MB in 0.51 seconds (215.04 MB/s)
native patched compiled native-0 691MB in 5.69 seconds (121.55 MB/s)
create dir kernel-0 222MB in 2.94 seconds (75.64 MB/s)
create dir kernel-1 222MB in 3.16 seconds (70.37 MB/s)
create dir kernel-2 222MB in 3.05 seconds (72.91 MB/s)
create dir kernel-3 222MB in 3.11 seconds (71.50 MB/s)
create dir kernel-4 222MB in 3.88 seconds (57.31 MB/s)
create dir kernel-5 222MB in 3.58 seconds (62.12 MB/s)
create dir kernel-6 222MB in 6.11 seconds (36.40 MB/s)
create dir kernel-7 222MB in 2.28 seconds (97.53 MB/s)
create dir kernel-8 222MB in 3.12 seconds (71.27 MB/s)
create dir kernel-9 222MB in 2.86 seconds (77.75 MB/s)
create dir kernel-10 222MB in 4.46 seconds (49.86 MB/s)
create dir kernel-11 222MB in 2.96 seconds (75.13 MB/s)
create dir kernel-12 222MB in 3.86 seconds (57.61 MB/s)
create dir kernel-13 222MB in 3.96 seconds (56.16 MB/s)
create dir kernel-14 222MB in 3.79 seconds (58.67 MB/s)
create dir kernel-15 222MB in 6.58 seconds (33.80 MB/s)
create dir kernel-16 222MB in 2.09 seconds (106.40 MB/s)
create dir kernel-17 222MB in 2.71 seconds (82.06 MB/s)
create dir kernel-18 222MB in 3.40 seconds (65.40 MB/s)
create dir kernel-19 222MB in 3.25 seconds (68.42 MB/s)
create dir kernel-20 222MB in 3.79 seconds (58.67 MB/s)
create dir kernel-21 222MB in 3.86 seconds (57.61 MB/s)
create dir kernel-22 222MB in 3.59 seconds (61.94 MB/s)
create dir kernel-23 222MB in 4.02 seconds (55.32 MB/s)
create dir kernel-24 222MB in 7.68 seconds (28.95 MB/s)
create dir kernel-25 222MB in 1.99 seconds (111.75 MB/s)
create dir kernel-26 222MB in 2.77 seconds (80.28 MB/s)
create dir kernel-27 222MB in 2.97 seconds (74.87 MB/s)
create dir kernel-28 222MB in 3.22 seconds (69.06 MB/s)
create dir kernel-29 222MB in 3.94 seconds (56.44 MB/s)
compile dir kernel-6 680MB in 3.78 seconds (180.06 MB/s)
compile dir kernel-29 680MB in 9.21 seconds (73.90 MB/s)
compile dir kernel-11 680MB in 9.38 seconds (72.56 MB/s)
compile dir kernel-22 680MB in 10.57 seconds (64.39 MB/s)
compile dir kernel-15 680MB in 7.68 seconds (88.62 MB/s)
compile dir kernel-13 680MB in 9.26 seconds (73.50 MB/s)
compile dir kernel-17 680MB in 9.44 seconds (72.10 MB/s)
compile dir kernel-3 680MB in 9.03 seconds (75.37 MB/s)
compile dir kernel-10 680MB in 9.30 seconds (73.19 MB/s)
compile dir kernel-12 680MB in 9.29 seconds (73.27 MB/s)
compile dir kernel-27 680MB in 10.84 seconds (62.79 MB/s)
compile dir kernel-14 680MB in 7.65 seconds (88.97 MB/s)
compile dir kernel-9 680MB in 9.55 seconds (71.27 MB/s)
compile dir kernel-4 680MB in 9.20 seconds (73.98 MB/s)
compile dir kernel-0 680MB in 12.06 seconds (56.44 MB/s)
compile dir kernel-23 680MB in 9.39 seconds (72.49 MB/s)
compile dir kernel-1 680MB in 9.06 seconds (75.13 MB/s)

Ext4:

./compilebench -i 30 --makej
creating /mnt/default
using working directory /mnt/default, 30 intial dirs 100 runs
native unpatched native-0 222MB in 1.11 seconds (200.34 MB/s)
native patched native-0 109MB in 0.33 seconds (332.33 MB/s)
native patched compiled native-0 691MB in 5.38 seconds (128.55 MB/s)
create dir kernel-0 222MB in 1.05 seconds (211.78 MB/s)
create dir kernel-1 222MB in 4.60 seconds (48.34 MB/s)
create dir kernel-2 222MB in 4.30 seconds (51.71 MB/s)
create dir kernel-3 222MB in 5.71 seconds (38.94 MB/s)
create dir kernel-4 222MB in 4.82 seconds (46.14 MB/s)
create dir kernel-5 222MB in 4.91 seconds (45.29 MB/s)
create dir kernel-6 222MB in 5.70 seconds (39.01 MB/s)
create dir kernel-7 222MB in 4.76 seconds (46.72 MB/s)
create dir kernel-8 222MB in 6.40 seconds (34.75 MB/s)
create dir kernel-9 222MB in 5.37 seconds (41.41 MB/s)
create dir kernel-10 222MB in 5.51 seconds (40.36 MB/s)
create dir kernel-11 222MB in 6.77 seconds (32.85 MB/s)
create dir kernel-12 222MB in 5.88 seconds (37.82 MB/s)
create dir kernel-13 222MB in 8.92 seconds (24.93 MB/s)
create dir kernel-14 222MB in 5.44 seconds (40.88 MB/s)
create dir kernel-15 222MB in 6.21 seconds (35.81 MB/s)
create dir kernel-16 222MB in 4.85 seconds (45.85 MB/s)
create dir kernel-17 222MB in 8.83 seconds (25.18 MB/s)
create dir kernel-18 222MB in 6.82 seconds (32.61 MB/s)
create dir kernel-19 222MB in 4.86 seconds (45.76 MB/s)
create dir kernel-20 222MB in 10.48 seconds (21.22 MB/s)
create dir kernel-21 222MB in 4.85 seconds (45.85 MB/s)
create dir kernel-22 222MB in 8.30 seconds (26.79 MB/s)
create dir kernel-23 222MB in 6.38 seconds (34.85 MB/s)
create dir kernel-24 222MB in 7.30 seconds (30.46 MB/s)
create dir kernel-25 222MB in 3.83 seconds (58.06 MB/s)
create dir kernel-26 222MB in 9.70 seconds (22.93 MB/s)
create dir kernel-27 222MB in 5.39 seconds (41.26 MB/s)
create dir kernel-28 222MB in 6.96 seconds (31.95 MB/s)
create dir kernel-29 222MB in 8.16 seconds (27.25 MB/s)
compile dir kernel-6 680MB in 7.47 seconds (91.12 MB/s)
compile dir kernel-29 680MB in 16.37 seconds (41.58 MB/s)
compile dir kernel-11 680MB in 19.57 seconds (34.78 MB/s)
compile dir kernel-22 680MB in 17.17 seconds (39.64 MB/s)
compile dir kernel-15 680MB in 17.40 seconds (39.12 MB/s)
compile dir kernel-13 680MB in 17.87 seconds (38.09 MB/s)
compile dir kernel-17 680MB in 18.14 seconds (37.52 MB/s)
compile dir kernel-3 680MB in 17.43 seconds (39.05 MB/s)
compile dir kernel-10 680MB in 15.18 seconds (44.84 MB/s)
compile dir kernel-12 680MB in 17.14 seconds (39.71 MB/s)
compile dir kernel-27 680MB in 18.71 seconds (36.38 MB/s)
compile dir kernel-14 680MB in 17.47 seconds (38.96 MB/s)
compile dir kernel-9 680MB in 19.76 seconds (34.45 MB/s)
compile dir kernel-4 680MB in 17.53 seconds (38.83 MB/s)
compile dir kernel-0 680MB in 17.20 seconds (39.57 MB/s)
compile dir kernel-23 680MB in 17.31 seconds (39.32 MB/s)
compile dir kernel-1 680MB in 18.19 seconds (37.42 MB/s)


  reply	other threads:[~2010-08-18 14:25 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-18 10:12 Poor creat/delete files performance Miao Xie
2010-08-18 10:49 ` Morten P.D. Stevens
2010-08-18 14:25   ` Chris Mason [this message]
2010-08-18 15:28     ` Morten P.D. Stevens
2010-08-18 15:39       ` Chris Mason
2010-08-18 16:26         ` Morten P.D. Stevens
2010-08-18 10:49 ` Leonidas Spyropoulos
2010-08-18 11:00   ` Miao Xie
2010-08-18 12:09 ` Chris Mason
2010-08-19  0:35   ` Miao Xie
2010-08-19  0:57     ` Chris Mason
2010-08-19  1:38       ` Miao Xie
2010-08-26 10:07       ` Miao Xie
2010-08-26 23:15         ` Chris Mason

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=20100818142541.GP5854@think \
    --to=chris.mason@oracle.com \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=miaox@cn.fujitsu.com \
    --cc=mstevens@imt-systems.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;
as well as URLs for NNTP newsgroup(s).