From: Duncan <1i5t5.duncan@cox.net>
To: linux-btrfs@vger.kernel.org
Subject: Re: Is the checkpoint interval adjustable?
Date: Thu, 1 Aug 2013 03:11:35 +0000 (UTC) [thread overview]
Message-ID: <pan$a83c3$c2cdec86$d7da19c7$c1d975d2@cox.net> (raw)
In-Reply-To: 20130731225640.GO32145@lenny. home.zabbo.net
Zach Brown posted on Wed, 31 Jul 2013 15:56:40 -0700 as excerpted:
[Mike Audia wrote...]
>> I am NO programmer by any stretch. Let's say I want them to be once
>> every 5 min (300 sec). Is the attached patch sane to acheive this?
>> Are there any unforeseen and effects of doing this?
> I don't *think* that there should be. One way of looking at it is that
> both 30 and 300 seconds are an *eternity* for cpu, memory, and storage.
> Any trouble that you could get in to in 300 seconds some other machine
> could trivially get in to in 30 with beefier hardware.
As a sysadmin (not a programmer) that has messed around with, for
example, vm.dirty_bytes/ratio, vm.dirty_writeback_centisecs, etc, the
concern I'd have is that longer commit periods and larger commit buffers
increase the possibility of writeback storms. While I've not tweaked
btrfs and I probably need to reexamine my current settings since I've
switched to SSD and btrfs, for spinning rust and reiserfs, I ended up
tweaking vm.dirty_* here.
The files are /proc/sys/vm/* and the kernel documentation for them in
Documentation/sysctl/vm.txt. Most distros have an initscript that writes
any custom values at boot, using values set in /etc/sysctl.conf and/or
/etc/sysctl.d/*, so that's where you'd normally set them once you've
settled on values that work for you.
The following are the defaults and what I settled on for a wall-powered
system.
vm.dirty_ratio defaults to 10 (percent of RAM). I've read and agree with
opinions that 10% of RAM when RAM is say half a gig (so 10% is ~50 MB)
isn't too bad on spinning rust, but it can be MUCH worse when RAM is say
my current 16 gig (so 10% is ~1.6 gig), as that's several seconds of
writeback on spinning rust. I reset that to 3% (~half a gig), here.
vm.dirty_background_ratio similarly, 5 (% of RAM) by default, reset to 1
(~160 MB).
(The vm.dirty_(background_)bytes knobs parallel the above "ratio" knobs
and may be easier to set for those thinking in terms of writeback backlog
size and corresponding system responsiveness or lack thereof during that
writeback, instead of percentage of memory dirty. Set one set or the
other.)
OTOH, vm.dirty_expire_centisecs defaults to 2999 (30 seconds, this is the
high priority foreground value and might well be the reason btrfs is
coded for a 30 second commit time as well) and
vm.dirty_writeback_centisecs defaults to 499 (5 seconds, this is the
lower priority background value). I left expire where it was, but
decided with the stricter ratio settings, writeback could be 10 seconds,
doubling the background writeback time.
Before tuning btrfs' hardcoded defaults, I'd suggest tuning these values
if you haven't already done so, and keeping them in mind if you do decide
to tune btrfs as well.
For battery powered systems, also take a look at laptop mode (and laptop-
mode-tools), which I use here on my laptop (which I don't have at hand to
check what I set for vm.dirty_* on it).
--
Duncan - List replies preferred. No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master." Richard Stallman
next prev parent reply other threads:[~2013-08-01 3:11 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-31 22:10 Is the checkpoint interval adjustable? Mike Audia
2013-07-31 22:56 ` Zach Brown
2013-08-01 15:40 ` David Sterba
2013-08-01 17:59 ` Zach Brown
[not found] ` <20130731225640.GO32145@lenny. home.zabbo.net>
2013-08-01 3:11 ` Duncan [this message]
-- strict thread matches above, loose matches on Subject: below --
2013-08-02 20:58 Mike Audia
2013-08-03 8:33 ` Duncan
2013-07-31 20:02 Mike Audia
2013-07-31 20:54 ` Zach Brown
2013-08-03 17:28 ` Kai Krakow
2013-08-03 17:37 ` Torbjørn
2013-08-04 0:58 ` Kai Krakow
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='pan$a83c3$c2cdec86$d7da19c7$c1d975d2@cox.net' \
--to=1i5t5.duncan@cox.net \
--cc=linux-btrfs@vger.kernel.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 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).