From: Chris Mason <chris.mason@oracle.com>
To: Jamie Lokier <jamie@shareable.org>
Cc: Andi Kleen <andi@firstfloor.org>,
Andrew Morton <akpm@linux-foundation.org>,
Eric Sandeen <sandeen@redhat.com>,
linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH 0/4] (RESEND) ext3[34] barrier changes
Date: Tue, 20 May 2008 12:02:53 -0400 [thread overview]
Message-ID: <200805201202.54420.chris.mason@oracle.com> (raw)
In-Reply-To: <20080520153658.GH16676@shareable.org>
On Tuesday 20 May 2008, Jamie Lokier wrote:
> Chris Mason wrote:
> > On Sunday 18 May 2008, Andi Kleen wrote:
> > > Andrew Morton <akpm@linux-foundation.org> writes:
> > > > On Fri, 16 May 2008 14:02:46 -0500
> > > >
> > > > Eric Sandeen <sandeen@redhat.com> wrote:
> > > >> A collection of patches to make ext3 & 4 use barriers by
> > > >> default, and to call blkdev_issue_flush on fsync if they
> > > >> are enabled.
> > > >
> > > > Last time this came up lots of workloads slowed down by 30% so I
> > > > dropped the patches in horror.
> > >
> > > Didn't ext4 have some new checksum trick to avoid them?
> >
> > I didn't think checksumming avoided barriers completely. Just the
> > barrier before the commit block, not the barrier after.
>
> A little optimisation note.
>
> You don't need the barrier after in some cases, or it can be deferred
> until a better time. E.g. when the disk write cache is probably empty
> (some time after write-idle), barrier flushes may take the same time
> as NOPs.
I hesitate to get too fancy here, if the disk is idle we probably won't notice
the performance gain.
>
> This sequence:
>
> #1 write metadata to journal
> #1 write commit block (checksummed)
> BARRIER
> #1 write metadata in place
> ... time passes ...
> #2 write metadata to journal
> #2 write commit block (checksummed)
> BARRIER
> #2 write metadata in place
> ... time passes ...
> #3 write metadata to journal
> #3 write commit block (checksummed)
> BARRIER
> #3 write metadata in place
>
> Can be rewritten as:
>
> #1 write metadata to journal
> #1 write commit block (checksummed)
> ... time passes ...
> #2 write metadata to journal
> #2 write commit block (checksummed)
> ... time passes ...
> #3 write metadata to journal
> #3 write commit block (checksummed)
> ... time passes ...
> BARRIER (probably instant).
> #1 write metadata in place
> #2 write metadata in place
> #3 write metadata in place
>
> Provided some conditions hold. All the metadata and all the journal
> writes being non-overlapping I/O ranges would be sufficient.
This is true, and would be a fairly good performance boost. It fits nicely
with the jbd trick of avoiding writes of a metadata block if a later
transaction has logged it.
But, it complicates the decision about when you're allowed to dirty a metadata
block for writeback. It used to be dirty-after-commit and it would change to
dirty-after-barrier. I suspect that is some significant surgery into jbd.
Also, since a commit isn't really done until the barrier is done, you can't
reuse blocks freed by the committing transaction until after the barrier,
which means changes in the deletion handling code.
Maybe I'm a wimp, but these are the two parts of write ahead logging I always
found the most difficult.
>
> What's more, barriers can be deferred past data=ordered in-place data
> writes, although that's not always an optimisation.
>
It might be really interesting to have a
i'm-about-to-barrier-find-some-io-to-run call. Something along the lines of
draining the dirty pages when the drive is woken up in laptop mode. There's
lots of fun with page lock vs journal lock ordering, but Jan has a handle on
that I think.
-chris
next prev parent reply other threads:[~2008-05-20 16:02 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-16 19:02 [PATCH 0/4] (RESEND) ext3[34] barrier changes Eric Sandeen
2008-05-16 19:05 ` [PATCH 1/4] ext3: enable barriers by default Eric Sandeen
2008-05-19 8:58 ` Pavel Machek
2008-05-16 19:07 ` [PATCH 2/4] ext3: call blkdev_issue_flush on fsync Eric Sandeen
2008-05-16 22:15 ` Jamie Lokier
2008-05-16 19:08 ` [PATCH 3/4] ext4: enable barriers by default Eric Sandeen
2008-05-16 19:09 ` [PATCH 4/4] ext4: call blkdev_issue_flush on fsync Eric Sandeen
2008-05-20 2:34 ` Theodore Tso
2008-05-20 15:43 ` Jamie Lokier
2008-05-20 15:52 ` Eric Sandeen
2008-05-20 19:54 ` Jens Axboe
2008-05-20 22:02 ` Jamie Lokier
2008-05-21 7:30 ` Jens Axboe
[not found] ` <4832F3C6.1050601@redhat.com>
2008-05-20 20:14 ` Jens Axboe
2008-05-16 20:05 ` [PATCH 0/4] (RESEND) ext3[34] barrier changes Andrew Morton
2008-05-16 20:53 ` Eric Sandeen
2008-05-16 20:58 ` Andrew Morton
2008-05-16 21:45 ` Jamie Lokier
2008-05-16 22:03 ` Eric Sandeen
2008-05-16 22:09 ` Jamie Lokier
2008-05-16 22:03 ` Jamie Lokier
2008-05-16 22:21 ` Eric Sandeen
2008-05-16 22:53 ` Jamie Lokier
2008-05-17 0:20 ` Theodore Tso
2008-05-17 0:35 ` Andrew Morton
2008-05-17 13:43 ` Theodore Tso
2008-05-17 17:59 ` Andreas Dilger
2008-05-17 20:44 ` Theodore Tso
2008-05-20 14:45 ` Jamie Lokier
2008-05-18 0:48 ` Chris Mason
2008-05-18 1:36 ` Theodore Tso
2008-05-18 14:49 ` Ric Wheeler
[not found] ` <4830420D.4080608@gmail.com>
2008-05-20 14:42 ` Jamie Lokier
2008-05-20 23:48 ` Jamie Lokier
2008-05-20 23:44 ` Jamie Lokier
2008-05-18 20:03 ` Andi Kleen
2008-05-19 0:43 ` Theodore Tso
2008-05-19 2:29 ` Eric Sandeen
[not found] ` <4830E60A.2010809@redhat.com>
2008-05-19 4:11 ` Andrew Morton
2008-05-19 17:16 ` Chris Mason
2008-05-19 18:39 ` Chris Mason
2008-05-19 22:39 ` Jan Kara
2008-05-20 0:29 ` Chris Mason
2008-05-20 3:29 ` Timothy Shimmin
2008-05-20 12:04 ` Chris Mason
2008-05-20 8:25 ` Jens Axboe
2008-05-20 12:17 ` Chris Mason
2008-05-21 11:22 ` Pavel Machek
2008-05-21 12:32 ` Theodore Tso
2008-05-21 18:03 ` Andrew Morton
2008-05-21 18:15 ` Eric Sandeen
2008-05-21 19:43 ` Jamie Lokier
2008-05-21 18:29 ` Theodore Tso
2008-05-21 18:49 ` Andrew Morton
2008-05-21 19:42 ` Jamie Lokier
2008-05-21 19:36 ` Jamie Lokier
[not found] ` <20080521193633.GA26780@shareable.org>
2008-05-21 19:40 ` Chris Mason
2008-05-21 19:54 ` Jamie Lokier
2008-05-20 14:58 ` Jamie Lokier
2008-05-21 22:30 ` Daniel Phillips
2008-05-20 23:35 ` Jamie Lokier
2008-05-19 0:28 ` Theodore Tso
2008-05-20 15:13 ` Jamie Lokier
[not found] ` <20080520151306.GF16676@shareable.org>
2008-05-21 20:25 ` Greg Smith
2008-05-16 22:30 ` Jamie Lokier
2008-05-18 19:54 ` Andi Kleen
2008-05-19 13:26 ` Chris Mason
2008-05-19 14:46 ` Theodore Tso
2008-05-20 2:51 ` [PATCH, RFC] ext4: Fix use of write barrier in commit logic Theodore Tso
[not found] ` <20080520025112.GN15035@mit.edu>
2008-05-20 15:23 ` Jamie Lokier
2008-05-23 18:33 ` [PATCH 0/4] (RESEND) ext3[34] barrier changes Ric Wheeler
2008-05-20 15:36 ` Jamie Lokier
2008-05-20 16:02 ` Chris Mason [this message]
2008-05-20 16:27 ` Jamie Lokier
2008-05-20 17:08 ` Chris Mason
2008-05-20 22:26 ` Jamie Lokier
2008-05-19 9:04 ` Pavel Machek
2008-05-29 13:36 ` Eric Sandeen
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=200805201202.54420.chris.mason@oracle.com \
--to=chris.mason@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=andi@firstfloor.org \
--cc=jamie@shareable.org \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sandeen@redhat.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).