public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "Ted Ts'o" <tytso@mit.edu>
To: Christoph Hellwig <hch@infradead.org>
Cc: Giangiacomo Mariotti <gg.mariotti@gmail.com>,
	linux-kernel@vger.kernel.org
Subject: Re: BTRFS: Unbelievably slow with kvm/qemu
Date: Sat, 17 Jul 2010 06:28:06 -0400	[thread overview]
Message-ID: <20100717102806.GD27114@thunk.org> (raw)
In-Reply-To: <20100714194905.GA20286@infradead.org>

On Wed, Jul 14, 2010 at 03:49:05PM -0400, Christoph Hellwig wrote:
> Below I have a table comparing raw blockdevices, xfs, btrfs, ext4 and
> ext3.  For ext3 we also compare the default, unsafe barrier=0 version
> and the barrier=1 version you should use if you actually care about
> your data.
> 
> The comparism is a simple untar of a Linux 2.6.34 tarball, including a
> sync after it.  We run this with ext3 in the guest, either using the
> default barrier=0, or for the later tests also using barrier=1.  It
> is done on an OCZ Vertext SSD, which gets reformatted and fully TRIMed
> before each test.
> 
> As you can see you generally do want to use cache=none and every
> filesystem is about the same speed for that - except that on XFS you
> also really need preallocation.  What's interesting is how bad btrfs
> is for the default compared to the others, and that for many filesystems
> things actually get minimally faster when enabling barriers in the
> guest.

Christoph,

Thanks so much for running these benchmarks.  It's been on my todo
list ever since the original complaint came across on the linux-ext4
list, but I just haven't had time to do the investigation.  I wonder
exactly what qemu is doing which is impact btrfs in particularly so
badly.  I assume that using the qcow2 format with cache=writethrough,
it's doing lots of effectively file appends whih require allocation
(or conversion of uninitialized preallocated blocks to initialized
blocks in the fs metadata) with lots of fsync()'s afterwards.

But when I've benchmarked the fs_mark benchmark writing 10k files
followed by an fsync, I didn't see results for btrfs that were way out
of line compared to xfs, ext3, ext4, et.al.  So merely doing a block
allocation, a small write, followed by an fsync, was something that
all file systems did fairly well at.  So there must be something
interesting/pathalogical about what qemu is doing with
cache=writethrough.  It might be interesting to understand what is
going on there, either to fix qemu/kvm, or so file systems know that
there's a particular workload that requires some special attention...

  	     	      	   	    	 - Ted

P.S.  I assume since you listed "sparse" that you were using a raw
disk and not a qcom2 block device image?


  parent reply	other threads:[~2010-07-18  7:08 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-07-12  5:24 BTRFS: Unbelievably slow with kvm/qemu Giangiacomo Mariotti
2010-07-12  5:54 ` Justin P. Mattock
2010-07-12  7:09 ` Michael Tokarev
2010-07-12  7:17   ` Justin P. Mattock
2010-07-12 13:15     ` Giangiacomo Mariotti
2010-07-12 13:34   ` Giangiacomo Mariotti
2010-07-12 13:40     ` Michael Tokarev
2010-07-12 13:43     ` Josef Bacik
2010-07-12 13:42       ` Michael Tokarev
2010-07-12 13:49         ` Josef Bacik
2010-07-12 20:23       ` Giangiacomo Mariotti
2010-07-12 20:24         ` Josef Bacik
2010-07-13  8:53       ` [Qemu-devel] " Kevin Wolf
2010-07-13  4:29 ` Avi Kivity
2010-07-14  2:39   ` Giangiacomo Mariotti
2010-07-14 19:49 ` Christoph Hellwig
2010-07-17  5:29   ` Giangiacomo Mariotti
2010-07-17 10:28   ` Ted Ts'o [this message]
2010-07-18  7:15     ` Christoph Hellwig
  -- strict thread matches above, loose matches on Subject: below --
2010-08-29 19:34 Tomasz Chmielewski
2010-08-30  0:14 ` Josef Bacik
2010-08-30 15:59   ` K. Richard Pixley
2010-08-31 21:46     ` Mike Fedyk
2010-08-31 22:01       ` K. Richard Pixley
     [not found]       ` <4C7D7B14.9020008@noir.com>
2010-09-02  0:18         ` Ted Ts'o
2010-09-02 16:36           ` K. Richard Pixley
2010-09-02 16:49             ` K. Richard Pixley

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=20100717102806.GD27114@thunk.org \
    --to=tytso@mit.edu \
    --cc=gg.mariotti@gmail.com \
    --cc=hch@infradead.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