From: "Michael L. Semon" <mlsemon35-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Andreas Rohner <andreas.rohner-hi6Y0CQ0nG0@public.gmane.org>,
linux-nilfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH v2 0/5] nilfs-utils: skip inefficient gc operations
Date: Wed, 22 Jan 2014 18:46:43 -0500 [thread overview]
Message-ID: <52E05863.90604@gmail.com> (raw)
In-Reply-To: <cover.1390310509.git.andreas.rohner-hi6Y0CQ0nG0@public.gmane.org>
On 01/21/2014 08:59 AM, Andreas Rohner wrote:
> Hi,
>
> This is the second version of this patch set. It replaces the kind of
> hacky use of v_flags with a proper implementation of
> NILFS_IOCTL_SET_SUINFO ioctl.
>
> v1->v2
> * Implementation of NILFS_IOCTL_SET_SUINFO
> * Added mc_min_free_blocks_threshold config option
> (if clean segments < min_clean_segments)
> * Added new command line param for nilfs-clean
> * Update man- and config-files
> * Simpler benchmark
>
> This patch set implements a small new feature and there shouldn't be
> any compatibility issues. It enables the GC to check how much free
> space can be gained from cleaning a segment and if it is less than a
> certain threshold it will abort the operation and try a different
> segment. Although no blocks need to be moved, the SUFILE entry of the
> corresponding segment needs to be updated to avoid an infinite loop.
As a user (not a NILFS2 developer), I'll have to live with this one for
a while to see how well I like it. On x86, xfstests went well for my
debug DEBUG_PAGEALLOC CONFIG_AIO=n kernel 3.13.0+, no obvious
before/after changes in speed, but no crashes, either. I hit a glitch
with Vyacheslav's xattr/ACL pages on 2k blocksize filesystems, so I'll
have to test smaller block sizes at a later time.
So that's your warning: small block sizes and POSIX AIO were not tested
by me. If you don't have xfstests, get it. It's useful for finding
bugs and regressions in filesystems.
Not having your super-secret test suite or disk space to run it, I
went the other direction, using the commonly available fs_mark utility
to make many tiny writes with 16 threads. My initial opinion is that
your new GC code fixes some obvious lag when a filesystem is populated
and nilfs_cleanerd starts to do its work. However, for reasons of code
or simple mathematics, the file system hits end-of-space a bit earlier
than does the unpatched code. I'll have to build some kernels, live
with the system, and otherwise generate lots of checkpoints to know if
this is a problem. IOW, I need to find out for myself if I need to
make a slightly larger filesystem to do the same things using a patched
NILFS2.
Thanks!
Michael
[sample collection of data from fs_mark below]
File/sec Output from this fs_mark command (two different runs)...
fs_mark -d /mnt/xfstests-test/test -F -D 16 -t 16 -n 150 -s 28672 -w 4096
...generates the following numbers for comparison:
FILES OLD NEW
2400 219.4 222.3
4800 210.5 217.9
7200 216.7 212
9600 216 213
12000 216.1 213.1
14400 215.5 213.4
16800 213.5 215.4
19200 212.5 214.9
21600 214.2 209.6
24000 212 200
26400 191.6 194.4
28800 211.3 208.6
31200 193.8 190.6
33600 188.2 174.6
36000 139.7 192.2
38400 78.9 204.9
40800 110.6 188.8
43200 73.8 205.9
45600 75.7 205.7
48000 76 190.4
50400 115.4 187
52800 180.8 190.6
55200 192.4 202
57600 158.3 206.8
60000 201.7 189.1
62400 174.8 200.7
64800 170 189.2
67200 203.3 187.7
69600 174.8 175
72000 150.9 174.3
74400 141.7 175.6
76800 199.5 174.6
79200 180.2 174.9
81600 66.8 77.1
84000 40.8 76.6
86400 67.3 86.9
88800 59.3 77.1
91200 127.1
93600 113.5
96000 110.1
98400 112.6
100800 75.5
103200 58
105600 53.8
108000 45.2
110400 45.9
112800 48.2
The test partition is a 4-GB MD RAID-0 partition, 64k chunk size,
on old, damaged spinning rust HDDs and old x86 hardware. GC issues
show up well when using small writes and small file sizes, at least
on this hardware. If this test moves more quickly on your hardware
(it should), try to increase the threads before increasing other
parameters.
--
To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2014-01-22 23:46 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-21 13:59 [PATCH v2 0/5] nilfs-utils: skip inefficient gc operations Andreas Rohner
[not found] ` <cover.1390310509.git.andreas.rohner-hi6Y0CQ0nG0@public.gmane.org>
2014-01-21 13:59 ` [PATCH v2 1/5] nilfs-utils: cldconfig add an option to set minimal free blocks Andreas Rohner
[not found] ` <22b5b3ac403052d3044dc8c1bebe323191376c03.1390310509.git.andreas.rohner-hi6Y0CQ0nG0@public.gmane.org>
2014-01-21 14:10 ` dexen deVries
2014-01-21 14:38 ` Andreas Rohner
2014-01-21 14:53 ` Andreas Rohner
2014-01-23 17:49 ` Vyacheslav Dubeyko
[not found] ` <B1FCAEBD-EB58-4A06-BD6B-7D4FB533D9F1-yeENwD64cLxBDgjK7y7TUQ@public.gmane.org>
2014-01-23 18:31 ` Andreas Rohner
2014-01-21 13:59 ` [PATCH v2 2/5] nilfs-utils: cleanerd: add custom error value to enable fast retry Andreas Rohner
[not found] ` <e9d3dd17318a994fe7e2c100368212e0b4029e13.1390310509.git.andreas.rohner-hi6Y0CQ0nG0@public.gmane.org>
2014-01-23 17:49 ` Vyacheslav Dubeyko
[not found] ` <FE7FB751-68F4-48C3-A97A-782F4F6E69FE-yeENwD64cLxBDgjK7y7TUQ@public.gmane.org>
2014-01-23 19:08 ` Andreas Rohner
2014-01-21 13:59 ` [PATCH v2 3/5] nilfs-utils: refactoring of nilfs_reclaim_segment to add minblocks param Andreas Rohner
[not found] ` <36ef66ee15b3de8ca00815a6baa7bf6b62ca57d4.1390310509.git.andreas.rohner-hi6Y0CQ0nG0@public.gmane.org>
2014-01-24 18:04 ` Ryusuke Konishi
2014-01-21 13:59 ` [PATCH v2 4/5] nilfs-utils: add support for NILFS_IOCTL_SET_SUINFO ioctl Andreas Rohner
[not found] ` <72f8c37258d08ba9793b0c1bb0374dd8efcd4756.1390310509.git.andreas.rohner-hi6Y0CQ0nG0@public.gmane.org>
2014-01-23 17:49 ` Vyacheslav Dubeyko
[not found] ` <62FA32DB-83AC-4570-BD73-618C169390FE-yeENwD64cLxBDgjK7y7TUQ@public.gmane.org>
2014-01-23 19:17 ` Andreas Rohner
[not found] ` <52E16AE4.4000303-hi6Y0CQ0nG0@public.gmane.org>
2014-01-25 16:16 ` Vyacheslav Dubeyko
2014-01-24 18:26 ` Ryusuke Konishi
[not found] ` <20140125.032633.184837411.konishi.ryusuke-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org>
2014-01-24 20:00 ` Andreas Rohner
[not found] ` <52E2C643.3070704-hi6Y0CQ0nG0@public.gmane.org>
2014-01-25 18:52 ` Ryusuke Konishi
2014-01-26 10:00 ` Ryusuke Konishi
[not found] ` <20140126.190004.443429632.konishi.ryusuke-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org>
2014-01-26 11:24 ` Andreas Rohner
2014-01-21 13:59 ` [PATCH v2 5/5] nilfs-utils: man: add description of min_free_blocks_threshold Andreas Rohner
2014-01-21 14:00 ` [PATCH v2 1/3] nilfs2: add new nilfs_suinfo_update struct Andreas Rohner
[not found] ` <cec6a449ddf5ae9da2928cdddfb96ebcb2789eee.1390312777.git.andreas.rohner-hi6Y0CQ0nG0@public.gmane.org>
2014-01-21 14:00 ` [PATCH v2 2/3] nilfs2: add nilfs_sufile_set_suinfo to update segment usage info Andreas Rohner
[not found] ` <2fd48b2d524a59a02bdad13c0c194de3e5b55cc7.1390312777.git.andreas.rohner-hi6Y0CQ0nG0@public.gmane.org>
2014-01-24 11:56 ` Ryusuke Konishi
[not found] ` <20140124.205623.400541300.konishi.ryusuke-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org>
2014-01-24 12:34 ` Andreas Rohner
[not found] ` <52E25DDC.2060502-hi6Y0CQ0nG0@public.gmane.org>
2014-01-24 16:34 ` Ryusuke Konishi
2014-01-21 14:00 ` [PATCH v2 3/3] nilfs2: implementation of NILFS_IOCTL_SET_SUINFO ioctl Andreas Rohner
[not found] ` <6fb5a6d45afca9ae2599c471c0e42805ed1b6c55.1390312777.git.andreas.rohner-hi6Y0CQ0nG0@public.gmane.org>
2014-01-24 13:20 ` Ryusuke Konishi
[not found] ` <20140124.222016.110509397.konishi.ryusuke-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org>
2014-01-24 13:44 ` Andreas Rohner
[not found] ` <52E26E46.3030702-hi6Y0CQ0nG0@public.gmane.org>
2014-01-24 15:23 ` Ryusuke Konishi
2014-01-24 4:56 ` [PATCH v2 1/3] nilfs2: add new nilfs_suinfo_update struct Ryusuke Konishi
[not found] ` <20140124.135635.27780504.konishi.ryusuke-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org>
2014-01-24 12:11 ` Andreas Rohner
[not found] ` <52E25883.3010307-hi6Y0CQ0nG0@public.gmane.org>
2014-01-24 12:37 ` Ryusuke Konishi
2014-01-22 23:46 ` Michael L. Semon [this message]
[not found] ` <52E05863.90604-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-01-23 10:25 ` [PATCH v2 0/5] nilfs-utils: skip inefficient gc operations Andreas Rohner
[not found] ` <52E0EE08.3040703-hi6Y0CQ0nG0@public.gmane.org>
2014-01-23 20:57 ` Michael L. Semon
2014-01-23 17:48 ` Vyacheslav Dubeyko
[not found] ` <85EBEC6B-CA69-472A-8DDD-8E056F809EC4-yeENwD64cLxBDgjK7y7TUQ@public.gmane.org>
2014-01-23 18:12 ` Andreas Rohner
[not found] ` <52E15B9E.6040307-hi6Y0CQ0nG0@public.gmane.org>
2014-01-24 8:02 ` Vyacheslav Dubeyko
[not found] ` <FC7F25C5-1E72-4DF5-B860-FBCE36E91EAB-yeENwD64cLxBDgjK7y7TUQ@public.gmane.org>
2014-01-24 14:18 ` Andreas Rohner
[not found] ` <52E27651.6070207-hi6Y0CQ0nG0@public.gmane.org>
2014-01-25 16:33 ` Vyacheslav Dubeyko
[not found] ` <82ACC3FC-BE83-483F-99D8-D13F4D02C58F-yeENwD64cLxBDgjK7y7TUQ@public.gmane.org>
2014-01-26 6:57 ` Ryusuke Konishi
[not found] ` <20140126.155740.56352351.konishi.ryusuke-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org>
2014-01-26 10:36 ` Andreas Rohner
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=52E05863.90604@gmail.com \
--to=mlsemon35-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
--cc=andreas.rohner-hi6Y0CQ0nG0@public.gmane.org \
--cc=linux-nilfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.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.