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)