All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Austin S. Hemmelgarn" <ahferroin7@gmail.com>
To: Ferry Toth <ftoth@telfort.nl>, linux-btrfs@vger.kernel.org
Subject: Re: number of subvolumes
Date: Fri, 25 Aug 2017 07:45:44 -0400	[thread overview]
Message-ID: <2828ac64-8b68-8b1c-554c-489bda3b70d1@gmail.com> (raw)
In-Reply-To: <onni1n$bic$2@blaine.gmane.org>

On 2017-08-24 17:56, Ferry Toth wrote:
> Op Thu, 24 Aug 2017 22:40:54 +0300, schreef Marat Khalili:
> 
>>> We find that typically apt is very slow on a machine with 50 or so
>>> snapshots and raid10. Slow as in probably 10x slower as doing the same
>>> update on a machine with 'single' and no snapshots.
>>>
>>> Other operations seem to be the same speed, especially disk benchmarks
>>> do not seem to indicate any performance degradation.
>>
>> For meaningful discussion it is important to take into account the fact
> 
> Doing daily updates on a desktop is not uncommon and when 3 minutes
> become 30 then many would call that meaningful.
I think the more meaningful aspect here is that it's 30 minutes where 
persistent storage is liable to be unusable, not necessarily that it's 
30 minutes.
> 
> Similar for a single office server, which is upgraded twice a year, where
> an upgrade normally would take an hour or 2, but now more than a working
> day. In the meantime, take samba and postgresql offline, preventing
> people to work for a few hours.
That should only be the case if:
1. You don't have your data set properly segregated from the rest of 
your system (it should not be part of the upgrade snapshot, but an 
independent snapshot taken separately).
2. You are updating the main system, instead of updating the snapshot 
you took.

The ideal method of handling an upgrade in this case is:
1. Snapshot the system, but not the data set.
2. Run your updates on the snapshot of the system.
3. Rename the snapshot and the root subvolume so that you boot into the 
snapshot.
4. During the next maintenance window (or overnight), shutdown the 
system services, snapshot the data set (so you can roll back if the 
update screws up the database).
5. Reboot.

That provides minimal downtime, and removes the need to roll-back if the 
upgrade fails part way through (you just nuke the snapshot and start 
over, instead of having to manually switch to the snapshot and reboot).
> 
> My point is: fsync is not targeted specifically in many common disk bench
> marks (phoronix?), it might be posible that there is no trigger to spend
> much time on optimizations in that area. That doesn't make it meaningless.
> 
>> that dpkg infamously calls fsync after changing every bit of
>> information, so basically you're measuring fsync speed. Which is slow on
>> btrfs (compared to simpler filesystems), but unrelated to normal work.
> 
> OTOH it would be nice if dpkg would at last start making use btrfs
> snapshot features and abandon these unnecssary fsyncs completely, instead
> restoring a failed install from a snapshot. This would probably result in
> a performance improve compared to ext4.
Not dpkg, apt-get and wherever other frontedd you use (although all the 
other dpkg frontends I know of are actually apt-get frontends).  Take a 
look at how SUSE actually does this integration, it's done through 
Zypper/YaST2, not RPM.  If you do it through dpkg, or RPM, or whatever 
other low-level package tool, you need to do a snapshot per package so 
that it works reliably, while what you really need is a snapshot per 
high-level transaction.

FWIW, if you can guarantee that the system won't crash during an update 
(or are actually able to roll back by hand easily if it won't boot), you 
can install libeatmydata and LD_PRELOAD it for the apt-get (or aptitude, 
or synaptic, or whatever else) call, then call sync afterwards and 
probably see a significant perofrmance improvement.  The library itself 
overloads *sync() calls to be no-ops, so it's not safe to use when you 
don't have good fallback options, but it tends to severely improve 
performance for stuff like dpkg.

  parent reply	other threads:[~2017-08-25 11:45 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-22 13:22 netapp-alike snapshots? Ulli Horlacher
2017-08-22 13:44 ` Peter Becker
2017-08-22 14:24   ` Ulli Horlacher
2017-08-22 16:08     ` Peter Becker
2017-08-22 16:48       ` Ulli Horlacher
2017-08-22 16:45     ` Roman Mamedov
2017-08-22 16:57       ` Ulli Horlacher
2017-08-22 17:19         ` A L
2017-08-22 18:01           ` Ulli Horlacher
2017-08-22 18:36             ` Peter Grandi
2017-08-22 20:48               ` Ulli Horlacher
2017-08-23  7:18                 ` number of subvolumes Ulli Horlacher
2017-08-23  8:37                   ` A L
2017-08-23 16:48                     ` Ferry Toth
2017-08-24 17:45                       ` Peter Grandi
2017-08-31  6:49                         ` Ulli Horlacher
2017-08-31 11:18                           ` Austin S. Hemmelgarn
2017-08-31 14:38                             ` Michał Sokołowski
2017-08-31 16:18                               ` Duncan
2017-09-01 10:21                                 ` ein
2017-09-01 11:47                                   ` Austin S. Hemmelgarn
2017-08-24 19:40                       ` Marat Khalili
2017-08-24 21:56                         ` Ferry Toth
2017-08-25  5:54                           ` Chris Murphy
2017-08-25 11:45                           ` Austin S. Hemmelgarn [this message]
2017-08-25 12:55                             ` Ferry Toth
2017-08-25 19:18                               ` Austin S. Hemmelgarn
2017-08-23 12:11                   ` Peter Grandi
2017-08-22 21:53               ` user snapshots Ulli Horlacher
2017-08-23  6:28                 ` Dmitrii Tcvetkov
2017-08-23  7:16                   ` Dmitrii Tcvetkov
2017-08-23  7:20                     ` Ulli Horlacher
2017-08-23 11:42                       ` Peter Grandi
2017-08-23 21:13                         ` Ulli Horlacher
2017-08-25 11:28                           ` Austin S. Hemmelgarn
2017-08-22 17:36         ` netapp-alike snapshots? Roman Mamedov
2017-08-22 18:10           ` Ulli Horlacher
2017-09-09 13:26 ` Ulli Horlacher
2017-09-09 13:36   ` Marc MERLIN
2017-09-09 13:44     ` Ulli Horlacher
2017-09-09 19:43       ` Andrei Borzenkov
2017-09-09 19:52         ` Ulli Horlacher
2017-09-10  7:10           ` A L
2017-09-10 14:54         ` Marc MERLIN

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=2828ac64-8b68-8b1c-554c-489bda3b70d1@gmail.com \
    --to=ahferroin7@gmail.com \
    --cc=ftoth@telfort.nl \
    --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 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.