From: David Arendt <admin-/LHdS3kC8BfYtjvyW6yDsg@public.gmane.org>
To: Ryusuke Konishi <ryusuke-sG5X7nlA6pw@public.gmane.org>
Cc: linux-nilfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: cleaner: run one cleaning pass based on minimum free space
Date: Mon, 29 Mar 2010 06:35:27 +0200 [thread overview]
Message-ID: <4BB02E0F.90001@prnet.org> (raw)
In-Reply-To: <20100329.125908.56566467.ryusuke-sG5X7nlA6pw@public.gmane.org>
[-- Attachment #1: Type: text/plain, Size: 2314 bytes --]
Hi,
here the changes
Thank in advance,
David Arendt
On 03/29/10 05:59, Ryusuke Konishi wrote:
> Hi,
> On Sun, 28 Mar 2010 23:52:52 +0200, David Arendt <admin-/LHdS3kC8BfYtjvyW6yDsg@public.gmane.org> wrote:
>
>> Hi,
>>
>> thanks for applying the patches. I did all my tests on 2 gbyte loop
>> devices and now that it is officially in git, I deployed it to some
>> production systems with big disks. Here I have noticed, that I have
>> completely forgotten the reserved segments. Technically this is not a
>> problem, but I think people changing configuration files will tend to
>> forget about it. I'm thinking it might be useful to add them internally
>> to min_free_segments and max_free_segments so users don't need to worry
>> about them. What do you think ?
>>
> Ahh, we should take into account the number of reserved segments. If
> not so, cleaner control with the two threshold values will not work
> properly for large drives.
>
>
>> If you like to change the current behavior to this behavior, I will
>> submit a short update patch.
>>
> Yes, please do.
>
>
>> I am thinking about getting the number of reserved segments this way:
>>
>> (nilfs_cleanerd->c_nilfs->n_sb->s_nsegments *
>> nilfs_cleanerd->c_nilfs->n_sb->s_r_segments_percentage) / 100
>>
>> or do you know any better way ?
>>
> The kernel code calulates the number by:
>
> = max(NILFS_MIN_NRSVSEGS,
> DIV_ROUND_UP(nsegments * r_segments_percentage, 100))
>
> where NILFS_MIN_NRSVSEGS is defined in include/nilfs2_fs.h, and
> DIV_ROUND_UP is defined as follows:
>
> #define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
>
> The same or some equivelent calculation seems preferable.
>
> With regards,
> Ryusuke Konishi
>
>
>> On 03/28/10 17:26, Ryusuke Konishi wrote:
>>
>>> Hi,
>>> On Sun, 28 Mar 2010 14:17:00 +0200, David Arendt <admin-/LHdS3kC8BfYtjvyW6yDsg@public.gmane.org> wrote:
>>>
>>>
>>>> Hi,
>>>>
>>>> here the nogc patch
>>>>
>>>> As changelog description for this one, we could put:
>>>>
>>>> add mount option to disable garbage collection
>>>>
>>>> Thanks in advance
>>>> Bye,
>>>> David Arendt
>>>>
>>>>
>>> Hmm, the patch looks perfect.
>>>
>>> Will queue both in the git tree of utils.
>>>
>>> Thanks,
>>> Ryusuke Konishi
>>>
>>>
>>
[-- Attachment #2: nilfs2-utils-min-free-segments-reserved.patch --]
[-- Type: text/plain, Size: 1645 bytes --]
diff -ur nilfs2-utils.orig/sbin/cleanerd/cleanerd.c nilfs2-utils/sbin/cleanerd/cleanerd.c
--- nilfs2-utils.orig/sbin/cleanerd/cleanerd.c 2010-03-29 06:05:51.382126765 +0200
+++ nilfs2-utils/sbin/cleanerd/cleanerd.c 2010-03-29 06:32:09.129775882 +0200
@@ -1185,7 +1185,7 @@
static int nilfs_cleanerd_clean_loop(struct nilfs_cleanerd *cleanerd)
{
struct nilfs_sustat sustat;
- __u64 prev_nongc_ctime = 0, prottime = 0, oldest = 0;
+ __u64 r_segments, prev_nongc_ctime = 0, prottime = 0, oldest = 0;
__u64 segnums[NILFS_CLDCONFIG_NSEGMENTS_PER_CLEAN_MAX];
struct timespec timeout;
sigset_t sigset;
@@ -1215,6 +1215,10 @@
cleanerd->c_ncleansegs = cleanerd->c_config.cf_nsegments_per_clean;
+ r_segments = ((nilfs_cleanerd->c_nilfs->n_sb->s_nsegments * nilfs_cleanerd->c_nilfs->n_sb->s_r_segments_percentage) + 99) / 100;
+ if (r_segments < NILFS_MIN_NRSVSEGS)
+ r_segments = NILFS_MIN_NRSVSEGS;
+
if (cleanerd->c_config.cf_min_clean_segments > 0)
nilfs_cleanerd_clean_check_pause(cleanerd, &timeout);
else
@@ -1242,13 +1246,13 @@
if (cleanerd->c_config.cf_min_clean_segments > 0) {
if (cleanerd->c_running) {
- if (sustat.ss_ncleansegs > cleanerd->c_config.cf_max_clean_segments) {
+ if (sustat.ss_ncleansegs > cleanerd->c_config.cf_max_clean_segments + r_segments) {
nilfs_cleanerd_clean_check_pause(cleanerd, &timeout);
goto sleep;
}
}
else {
- if (sustat.ss_ncleansegs < cleanerd->c_config.cf_min_clean_segments)
+ if (sustat.ss_ncleansegs < cleanerd->c_config.cf_min_clean_segments + r_segments)
nilfs_cleanerd_clean_check_resume(cleanerd);
else
goto sleep;
next prev parent reply other threads:[~2010-03-29 4:35 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-14 13:00 cleaner: run one cleaning pass based on minimum free space admin-/LHdS3kC8BfYtjvyW6yDsg
[not found] ` <hSSjxhQnnRB5.kxy725KN-GG6YVgmNXeLOQU1ULcgDhA@public.gmane.org>
2010-03-14 14:28 ` Ryusuke Konishi
[not found] ` <20100314.232838.05854811.ryusuke-sG5X7nlA6pw@public.gmane.org>
2010-03-14 23:03 ` David Arendt
[not found] ` <4B9D6B51.5010202-/LHdS3kC8BfYtjvyW6yDsg@public.gmane.org>
2010-03-15 15:58 ` Ryusuke Konishi
[not found] ` <20100316.005815.140047502.ryusuke-sG5X7nlA6pw@public.gmane.org>
2010-03-15 17:09 ` David Arendt
[not found] ` <4B9E69D2.4030803-/LHdS3kC8BfYtjvyW6yDsg@public.gmane.org>
2010-03-17 17:26 ` Ryusuke Konishi
2010-03-15 21:24 ` David Arendt
[not found] ` <4B9EA58C.1080402-/LHdS3kC8BfYtjvyW6yDsg@public.gmane.org>
2010-03-17 18:11 ` Ryusuke Konishi
[not found] ` <20100318.031108.204325310.ryusuke-sG5X7nlA6pw@public.gmane.org>
2010-03-17 19:04 ` David Arendt
2010-03-24 5:35 ` David Arendt
[not found] ` <4BA9A484.20809-/LHdS3kC8BfYtjvyW6yDsg@public.gmane.org>
2010-03-27 17:48 ` Ryusuke Konishi
[not found] ` <20100328.024853.37589748.ryusuke-sG5X7nlA6pw@public.gmane.org>
2010-03-27 18:32 ` David Arendt
2010-03-27 20:00 ` David Arendt
[not found] ` <4BAE63F4.1040404-/LHdS3kC8BfYtjvyW6yDsg@public.gmane.org>
2010-03-28 1:55 ` Ryusuke Konishi
[not found] ` <20100328.105542.258871713.ryusuke-sG5X7nlA6pw@public.gmane.org>
2010-03-28 12:17 ` David Arendt
[not found] ` <4BAF48BC.8060505-/LHdS3kC8BfYtjvyW6yDsg@public.gmane.org>
2010-03-28 15:26 ` Ryusuke Konishi
[not found] ` <20100329.002619.67908494.ryusuke-sG5X7nlA6pw@public.gmane.org>
2010-03-28 21:52 ` David Arendt
[not found] ` <4BAFCFB4.5050401-/LHdS3kC8BfYtjvyW6yDsg@public.gmane.org>
2010-03-29 3:59 ` Ryusuke Konishi
[not found] ` <20100329.125908.56566467.ryusuke-sG5X7nlA6pw@public.gmane.org>
2010-03-29 4:35 ` David Arendt [this message]
[not found] ` <4BB02E0F.90001-/LHdS3kC8BfYtjvyW6yDsg@public.gmane.org>
2010-03-29 7:39 ` Ryusuke Konishi
[not found] ` <20100329.163902.263795283.ryusuke-sG5X7nlA6pw@public.gmane.org>
2010-04-05 3:02 ` Ryusuke Konishi
[not found] ` <20100405.120226.98047309.ryusuke-sG5X7nlA6pw@public.gmane.org>
2010-04-05 7:50 ` David Arendt
[not found] ` <4BB99633.1030701-/LHdS3kC8BfYtjvyW6yDsg@public.gmane.org>
2010-04-05 11:34 ` Ryusuke Konishi
[not found] ` <20100405.203450.56374807.ryusuke-sG5X7nlA6pw@public.gmane.org>
2010-04-05 13:35 ` David Arendt
[not found] ` <4BB9E726.8020407-/LHdS3kC8BfYtjvyW6yDsg@public.gmane.org>
2010-04-06 16:06 ` Ryusuke Konishi
[not found] ` <20100407.010609.179957904.ryusuke-sG5X7nlA6pw@public.gmane.org>
2010-04-06 17:41 ` David Arendt
[not found] ` <4BBB724D.6040207-/LHdS3kC8BfYtjvyW6yDsg@public.gmane.org>
2010-04-06 18:04 ` Ryusuke Konishi
[not found] ` <20100407.030446.52169610.ryusuke-sG5X7nlA6pw@public.gmane.org>
2010-04-07 10:39 ` admin-/LHdS3kC8BfYtjvyW6yDsg
[not found] ` <0f70f9c8a2d58971d6d6af5104c73066.squirrel-YfwCgBv0H3oBXFe83j6qeQ@public.gmane.org>
2010-04-08 5:12 ` Ryusuke Konishi
[not found] ` <20100408.141218.179775797.ryusuke-sG5X7nlA6pw@public.gmane.org>
2010-04-08 10:54 ` admin-/LHdS3kC8BfYtjvyW6yDsg
2010-04-06 16:12 ` Ryusuke Konishi
[not found] ` <y2gee5afd761004050430gd8c60707s9505a0d680345fe6@mail.gmail.com>
[not found] ` <y2gee5afd761004050430gd8c60707s9505a0d680345fe6-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-04-05 12:35 ` Jan de Kruyf
[not found] ` <l2wee5afd761004050535l6214e37dja6f20737865dd856-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-04-06 17:56 ` Ryusuke Konishi
2010-03-16 11:17 ` admin-/LHdS3kC8BfYtjvyW6yDsg
[not found] ` <08886d8962faeee94a5ab900a2a78ad2.squirrel-YfwCgBv0H3oBXFe83j6qeQ@public.gmane.org>
2010-03-17 18:32 ` Ryusuke Konishi
[not found] ` <20100318.033237.203922438.ryusuke-sG5X7nlA6pw@public.gmane.org>
2010-03-17 19:12 ` David Arendt
-- strict thread matches above, loose matches on Subject: below --
2010-03-13 20:49 David Arendt
[not found] ` <4B9BFA67.1010501-/LHdS3kC8BfYtjvyW6yDsg@public.gmane.org>
2010-03-14 5:26 ` Ryusuke Konishi
[not found] ` <20100314.142634.172547823.ryusuke-sG5X7nlA6pw@public.gmane.org>
2010-03-14 8:47 ` David Arendt
[not found] ` <4B9CA2BB.6000907-/LHdS3kC8BfYtjvyW6yDsg@public.gmane.org>
2010-03-14 11:59 ` Ryusuke Konishi
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=4BB02E0F.90001@prnet.org \
--to=admin-/lhds3kc8bfytjvyw6ydsg@public.gmane.org \
--cc=linux-nilfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=ryusuke-sG5X7nlA6pw@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.