From: "Darrick J. Wong" <darrick.wong@oracle.com>
To: "Theodore Ts'o" <tytso@mit.edu>
Cc: linux-ext4@vger.kernel.org
Subject: Re: [PATCH 11/14] libext2fs: use fallocate for creating journals and hugefiles
Date: Mon, 18 May 2015 12:24:52 -0700 [thread overview]
Message-ID: <20150518192452.GI30577@birch.djwong.org> (raw)
In-Reply-To: <20150517033925.GH4489@thunk.org>
On Sat, May 16, 2015 at 11:39:25PM -0400, Theodore Ts'o wrote:
> On Wed, May 13, 2015 at 05:22:19PM -0700, Darrick J. Wong wrote:
> > Use the new fallocate API for creating the journal and the mk_hugefile
> > feature.
> >
> > Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
>
> I tried applying patches 9-11, and I found a regression. If you add
> the following stanza to /etc/mke2fs.conf:
>
> hugefile = {
> features = extent,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize,^resize_inode,sparse_super2
> hash_alg = half_md4
> num_backup_sb = 0
> packed_meta_blocks = 1
> make_hugefiles = 1
> inode_ratio = 4194304
> hugefiles_dir = /store
> hugefiles_name = big-data
> hugefiles_digits = 0
> hugefiles_size = 0
> hugefiles_align = 256M
> num_hugefiles = 1
> zero_hugefiles = false
> flex_bg_size = 262144
> }
>
> ... then "mke2fs -Fq -T hugefile /dev/sdXX" should create a file
> system with a single file /store/big-data that starts at offset 256M
> and consumes the rest of the space. For example, try the commands
>
> % time mke2fs -Fq -T hugefile /tmp/foo.img 8T
> % debugfs -R "extents /store/big-data" /tmp/foo.img
>
> With this patch applied, the file /store/big-data is a zero-length
> file, instead of a very big file consuming the whole disk.
Oops. I missed that subtlety; it's a pretty quick fix to make it
fallocate all the way to the end. I also found a small bookkeeping error
that eliminates the churn in the test case expect files.
> Arguably there should have been a test so that this regression would
> be detected automatically. I'll take care of adding it.
>
> (BTW, note how quickly the file /store/big-data is created using the
> mk_hugefile code. Although I understand the new fallocate code is
> more general, hopefully this generality doesn't cause performance
> regression in terms of the file system layout or CPU time required to
> create the big-data file.)
A lot of the complexity deals with figuring out if for a given hole we should
merely try to extent (or merge) the left and right extents. For empty files,
it figures out that there is no left/right extent and simply cuts to the
alloc-range-and-map loop. I noticed that it seemed to slow down maybe a
tenth of a second (out of 5) for a 4TB file; is that too much of a regression?
--D
>
> > --- a/tests/r_32to64bit_meta/expect
> > +++ b/tests/r_32to64bit_meta/expect
> > @@ -35,8 +35,8 @@ Change in FS metadata:
> > Inode count: 65536
> > Block count: 524288
> > Reserved block count: 26214
> > --Free blocks: 858
> > -+Free blocks: 852
> > +-Free blocks: 857
> > ++Free blocks: 851
> > Free inodes: 65046
> > First block: 1
> > Block size: 1024
>
> Why these changes? This implies the new fallocate code isn't creating
> an extent tree that isn't quite as efficient as the original code?
>
> - Ted
> --
> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2015-05-18 19:24 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-14 0:21 [PATCH 00/14] e2fsprogs May 2015 patchbomb Darrick J. Wong
2015-05-14 0:21 ` [PATCH 01/14] misc: fix Coverity bugs Darrick J. Wong
2015-05-16 22:36 ` Theodore Ts'o
2015-05-14 0:21 ` [PATCH 02/14] undo-io: write out index block after every write Darrick J. Wong
2015-05-17 0:18 ` Theodore Ts'o
2015-05-14 0:21 ` [PATCH 03/14] misc: fix undo file setup Darrick J. Wong
2015-05-17 0:20 ` Theodore Ts'o
2015-05-14 0:21 ` [PATCH 04/14] filefrag: fix broken extent emulation and uninitialized variables Darrick J. Wong
2015-05-17 0:26 ` Theodore Ts'o
2015-05-14 0:21 ` [PATCH 05/14] e2fsck: fix buffer overrun in revoke block scanning Darrick J. Wong
2015-05-14 19:37 ` [PATCH v2 " Darrick J. Wong
2015-05-17 0:50 ` Theodore Ts'o
2015-05-14 0:21 ` [PATCH 06/14] e2fsck: convert block-mapped files to extents on bigalloc fs Darrick J. Wong
2015-05-17 0:51 ` Theodore Ts'o
2015-05-14 0:21 ` [PATCH 07/14] libext2fs: support allocating uninit blocks in bmap2() Darrick J. Wong
2015-05-17 0:54 ` Theodore Ts'o
2015-05-14 0:22 ` [PATCH 08/14] libext2fs: find/alloc a range of empty blocks Darrick J. Wong
2015-05-17 1:02 ` Theodore Ts'o
2015-05-14 0:22 ` [PATCH 09/14] libext2fs: add new hooks to support large allocations Darrick J. Wong
2015-06-11 0:08 ` Theodore Ts'o
2015-05-14 0:22 ` [PATCH 10/14] libext2fs: implement fallocate Darrick J. Wong
2015-06-11 0:09 ` Theodore Ts'o
2015-05-14 0:22 ` [PATCH 11/14] libext2fs: use fallocate for creating journals and hugefiles Darrick J. Wong
2015-05-17 3:39 ` Theodore Ts'o
2015-05-18 19:24 ` Darrick J. Wong [this message]
2015-05-18 21:18 ` [PATCH v2 " Darrick J. Wong
2015-06-11 0:12 ` Theodore Ts'o
2015-05-14 0:22 ` [PATCH 12/14] debugfs: implement fallocate Darrick J. Wong
2015-06-11 0:12 ` Theodore Ts'o
2015-05-14 0:22 ` [PATCH 13/14] tests: test debugfs punch command Darrick J. Wong
2015-06-11 0:13 ` Theodore Ts'o
2015-05-18 21:17 ` [PATCH 15/14] libext2fs: remove unnecessary undo file flush calls Darrick J. Wong
2015-06-11 0:13 ` Theodore Ts'o
2015-06-05 1:38 ` [PATCH 16/14] libext2fs: require the inline data xattr on all inline data files Darrick J. Wong
2015-06-11 0:15 ` Theodore Ts'o
2015-07-23 21:12 ` Darrick J. Wong
[not found] ` <20150514002240.10785.35238.stgit@birch.djwong.org>
2015-06-11 0:13 ` [PATCH 14/14] misc: add fuse2fs, a FUSE server for e2fsprogs (v4.3) Theodore Ts'o
2015-06-15 18:37 ` Darrick J. Wong
2015-06-15 19:21 ` Theodore Ts'o
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=20150518192452.GI30577@birch.djwong.org \
--to=darrick.wong@oracle.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 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).