From: Jonathan Nieder <jrnieder@gmail.com>
To: linux-ext4@vger.kernel.org
Cc: Ted Ts'o <tytso@mit.edu>
Subject: Re: Bug#605009: serious performance regression with ext4
Date: Mon, 29 Nov 2010 01:29:30 -0600 [thread overview]
Message-ID: <20101129072930.GA7213@burratino> (raw)
In-Reply-To: <20101129041152.GQ2767@thunk.org>
Hi,
Ted Ts'o wrote:
> I did some experimenting, and I figured out what was going on. You're
> right, (c) doesn't quite work, because delayed allocation meant that
> the writeout didn't take place until the fsync() for each file
> happened. I didn't see this at first; my apologies.
Thanks for a clear analysis[1]. I am still confused about something,
though. If the answer is "stop wasting my time, just read the source", I
can accept that.
> sync_file_range() is a Linux specific system
> call that has been around for a while. It allows program to control
> when writeback happens in a very low-level fashion. The first set of
> sync_file_range() system calls causes the system to start writing back
> each file once it has finished being extracted. It doesn't actually
> wait for the write to finish; it just starts the writeback.
True, using sync_file_range(..., SYNC_FILE_RANGE_WRITE) for each file
makes later fsync() much faster. But why? Is this a matter of allowing
writeback to overlap with write() or is something else going on?
I'm thinking it has to be something else, since sync() is fast without the
sync_file_range().
> I've attached the program I used to test and prove this mechanism, as
> well as the kernel tracepoint script I used to debug why (c) wasn't
> working, which might be of interest to folks on debian-kernel.
> Basically it's a demonstration of how cool ftrace is. :-)
Perhaps the answer can be phrased in terms of the output of this script.
> #!/bin/sh
> cd /sys/kernel/debug/tracing
> echo blk > current_tracer
> echo 1 > /sys/block/dm-5/trace/enable
> echo 1 > events/ext4/ext4_sync_file/enable
> echo 1 > events/ext4/ext4_da_writepages/enable
> echo 1 > events/ext4/ext4_mark_inode_dirty/enable
> echo 1 > events/jbd2/jbd2_run_stats/enable
> echo 1 > events/jbd2/jbd2_start_commit/enable
> echo 1 > events/jbd2/jbd2_end_commit/enable
> (cd /kbuild; /home/tytso/src/mass-sync-tester -n)
> cat trace > /tmp/trace
> echo 0 > events/jbd2/jbd2_start_commit/enable
> echo 0 > events/jbd2/jbd2_end_commit/enable
> echo 0 > events/jbd2/jbd2_run_stats/enable
> echo 0 > events/ext4/ext4_sync_file/enable
> echo 0 > events/ext4/ext4_da_writepages/enable
> echo 0 > events/ext4/ext4_mark_inode_dirty/enable
> echo 0 > /sys/block/dm-5/trace/enable
> echo nop > current_tracer
Jonathan
[1] http://lists.debian.org/debian-devel/2010/11/msg00577.html
next parent reply other threads:[~2010-11-29 8:37 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20101126093257.23480.86900.reportbug@pluto.milchstrasse.xx>
[not found] ` <20101126145327.GB19399@rivendell.home.ouaza.com>
[not found] ` <20101126215254.GJ2767@thunk.org>
[not found] ` <20101127075831.GC24433@burratino>
[not found] ` <20101127085346.GD14011@rivendell.home.ouaza.com>
[not found] ` <20101129041152.GQ2767@thunk.org>
2010-11-29 7:29 ` Jonathan Nieder [this message]
2010-11-29 14:44 ` Bug#605009: serious performance regression with ext4 Ted Ts'o
2010-11-29 15:18 ` Bernd Schubert
2010-11-29 15:37 ` Ted Ts'o
2010-11-29 15:54 ` Eric Sandeen
2010-11-29 16:20 ` Bernd Schubert
2010-11-29 16:27 ` Florian Weimer
2010-11-29 20:50 ` Andreas Dilger
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=20101129072930.GA7213@burratino \
--to=jrnieder@gmail.com \
--cc=linux-ext4@vger.kernel.org \
--cc=tytso@mit.edu \
/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.