All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ted Ts'o <tytso@mit.edu>
To: Josef Bacik <josef@redhat.com>
Cc: Jon Leighton <j@jonathanleighton.com>, linux-ext4@vger.kernel.org
Subject: Re: Severe slowdown caused by jbd2 process
Date: Fri, 21 Jan 2011 18:56:41 -0500	[thread overview]
Message-ID: <20110121235641.GM3043@thunk.org> (raw)
In-Reply-To: <20110121143145.GB11313@dhcp231-156.rdu.redhat.com>

On Fri, Jan 21, 2011 at 09:31:45AM -0500, Josef Bacik wrote:
> 
> Yup, whatever you are doing in your webapp is making your database do lots of
> fsyncs, which is going to suck.  If you are on a battery backed system or just
> don't care if you lose your database and rather it be faster you can mount your
> ext4 fs with -o nobarrier.  Thanks,

Note that if you don't use -o barrier on ext3, or use -o nobarrier on
ext4, the chance of significant file system damage if you have a power
failure, since without the barrier, the file system doesn't wait for
disk to acknowledge that the data has hit the barrier.  The problem is
that if you are using a barrier operation, you're not going to be able
to get more than about 30-50 non-trivial[1] fsync's per second on a
standard HDD; barriers are inherently slow.

[1] Where there was some kind of data write between the two fsync's.
You may be able to get faster back-to-back fsync() with no intervening
data writes, but that's not terribly interesting.  :-)

A UPS should protect you against most of the dangers of not using
barriers.  The other choice is to be more intelligent with your coding
(and/or with your database choice) to avoid needing a huge number of
fsync's, as they are going to be costly.  If you can batch multiple
database operations under a single commit, for example, you should be
able to eliminate the need for so many fsync's.

		        	       	       - Ted



  reply	other threads:[~2011-01-21 23:56 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-21  0:13 Severe slowdown caused by jbd2 process Jon Leighton
2011-01-21  1:31 ` Josef Bacik
     [not found]   ` <1295601083.5799.3.camel@tybalt>
2011-01-21 12:59     ` Josef Bacik
2011-01-21 14:03       ` Josef Bacik
2011-01-21 14:28         ` Jon Leighton
2011-01-21 14:31           ` Josef Bacik
2011-01-21 23:56             ` Ted Ts'o [this message]
2011-01-22  1:11               ` torn5
2011-01-22  1:34                 ` Ted Ts'o
2011-01-22 16:21                   ` torn5
2011-01-22 19:37                     ` Theodore Tso
2011-01-22 23:22                       ` torn5
2011-01-23  5:17                         ` Ted Ts'o
2011-01-23 18:43                           ` torn5
2011-01-24 20:16                             ` Ted Ts'o
2011-01-22 13:05               ` Ric Wheeler
2011-01-24 20:41             ` Darrick J. Wong

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=20110121235641.GM3043@thunk.org \
    --to=tytso@mit.edu \
    --cc=j@jonathanleighton.com \
    --cc=josef@redhat.com \
    --cc=linux-ext4@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.