All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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.