On Sat, Apr 16, 2011 at 09:29:26PM +0200, Manuel Bouyer wrote:
> Hello,
> attached is a work in progress on ffs snapshot (as it's work in progress,
> some debug and instrumentation code is still present in the
> patch, no need to comment on this part :).
> The start of this work is that when working on quota, I noticed that
> taking a snapshot on a 500Gb filesystem needs several minutes, and is
> O(n) with the number of persisent snapshots.
> Here's some timings on a otherwise idle 500Gb filesystem (it's some brand of
> SATA2 3.5" drive attached to a AHCI controller, so it's a reasonable test
> bed for today):
> java# /usr/bin/time fssconfig fss0 /home /home/snaps/snap0
>       260.53 real         0.00 user         1.15 sys
> /home: suspended 77.873 sec, redo 1184 of 2556
> java# /usr/bin/time fssconfig fss1 /home /home/snaps/snap1
>       377.87 real         0.00 user         2.53 sys
> /home: suspended 206.078 sec, redo 1184 of 2556
> java# /usr/bin/time fssconfig fss2 /home /home/snaps/snap2
>       508.23 real         0.00 user         4.28 sys
> /home: suspended 338.534 sec, redo 1184 of 2556
> java# /usr/bin/time fssconfig fss3 /home /home/snaps/snap3
>       621.40 real         0.00 user         5.50 sys
> /home: suspended 431.154 sec, redo 1183 of 2556
> 
> suspending a filesystem for more than 7mn to take a snapshot makes
> persisent snapshot quite useless to me. I wonder how it would behaves
> on a multi-terabyte filesystem.
[snip]

These times depend on the file systems block size.  With contiguous indirect
blocks (ffs_balloc.c rev 1.54) I did timings on a 1.4 TByte UFS1 non-logging
file system created on 3 concatenated WD5003ABYX.  For every block size
I created four persistent snapshots (with unmounting the file systems after
every creation) and get these times (seconds):

Layout            create suspended

91441948 x 16384  385.713   22.785
91441948 x 16384  414.170   59.580
91441948 x 16384  474.164   91.385
91441948 x 16384  652.556  111.314

45720974 x 32768   43.478    0.420
45720974 x 32768   40.790    5.642
45720974 x 32768   49.700   12.748
45720974 x 32768   55.599   18.612

22860487 x 65536    7.005    0.600
22860487 x 65536   10.558    2.436
22860487 x 65536   14.365    4.122
22860487 x 65536   18.615    5.739

For me snapshots create reasonable fast with a block size of 32k or 64k.

-- 
Juergen Hannken-Illjes - hann...@eis.cs.tu-bs.de - TU Braunschweig (Germany)

Reply via email to