Re: Dar architecture questions

Denis Corbin <[email protected]> Sun, 14 Oct 2012 15:49:08 +0200
Newsgroups gmane.comp.sysutils.backup.dar.general
Message-ID <[email protected]>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 13/10/2012 20:37, Kevin Wormington wrote:
> Hi,

Hi,

> 
> I have recently started using dar to backup a fairly large number of 
> files (it's maildir stuff) which consists of approx 136G of data in 
> ~1.68 million files.  I must complement dar since it is one of the few 
> programs I tried that could actually complete an initial backup in a 
> fairly reasonable period of time...it took just under 10 hours.

Interesting feedback, thanks,

> 
> I have just started testing making a differential backup using the 
> catalog from the full backup that was generated on the fly.  It works 
> quite well but I do have some questions:
> 
> 1) It takes 46 minutes if I am generating an on-the-fly catalog and 30 
> minutes if not.  I haven't looked through the source yet, but I'm 
> curious why there would be such a difference since it appears the 
> catalog is kept in memory.

Thanks pointing at this. After reviewing the code I found that
implementation could probably be simplified about this feature.

In release older than 2.4.0, the isolation process was a modification of
the archive contents (aka "catalogue"). We speak here about C++ classes
and objects: the "archive" objects owns a "catalogue" object. Modifying
that catalog would lead to an incoherence between the catalog and the
other "archive" class's object (objects for slicing, compression,
encryption, etc.). So the isolation operation is realized by the
creation of a new archive object with partial data from the original
"catalogue" object.

Since release 2.4.0, the archive isolation still creates an new archive
object which this time rawly clones the whole catalogue object because
it must now be able to be used as backup of the internal catalogue in
case of corruption in the original archive (and not only as a
replacement of the original catalogue for differential backup as it was
before 2.4.0).

So the isolated catalogue must keep the information of the offset where
to find a particular file's data and EA in the archive. There is just a
flag and the "internal archive signature" taken from the original
archive that are added into the isolated archive header. The flag avoids
a user trying to restore data from this archive alone (as it does not
carry any data). The signature matches the one of the original archive
which can then be used to get the data from, and avoid user trying to
restore data from an archive that the isolated catalogue has not been
taken from.

So, the simplification could result in the replacement of the special
"isolation" constructor for class archive, by an isolation method that
would create a isolated archive from the in-memory archive object (no
more need to copy anything). This would reduce memory and time
requirements for the isolation operation.

> 
> 2) On both test runs I made the stats were displayed after ~21 minutes 
> and the .dar slice does not appear to grow or be modified after this 
> time.  What is dar doing during this period?

I'm pretty sure this time is taken by memory management (releasing
memory here). Dar is very careful in regard to memory allocation and
release. So it takes time releasing memory and checks that everything
has been released once and only once. This has a cost, but the gain is
about bug detection and validation that the operation was done properly.

Yes, dar could simply stop and let the system cleanup the whole mess,
but that's my way of making things, sorry.

> 
> I included the stats display and the time for each run below.  This is 
> dar v 2.4.8.
> 
> Thanks for a great software!

You are welcome! :)

> 
> Kevin
> 

Denis.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQIVAwUBUHrC0QgxsL0D2LGCAQIQYhAAmAljPUSkn32eMJMAS2tZdLYBJxmD3SiH
mZu/Xq5HX+SrXm0Mm92nz1gBeI+VOiWpIG25P3B6BylVa41vPIe7eZ0egfTQc/xH
/ofrWV97olOQneGgTc2xeVLn/6zngIk7MqoWW4xohg+PAw47liSRGICcWr92XN9s
csEMWqKlY220wAg8LQP3FTpXpEqPE/vwh/mfpw9Sv4m0Bv8xM+vEprIjEQpVcZrI
qdTZ/Kd2xDcBXK6DJyC9zb1CA9sjY8ZMOPHouc4/U5tqhz1F+N9JAx3jqAEu37tv
5FBvU9vmwkrUFy6KUUCcybvegaSe0Hkh72WHfVfLuMuIROl9pBMwL+khCRfIoAFO
vSeemLb7T3JKn0plGpaxttS/FSdjhNTrZsZ+1+YahNM4ndWglsHL0OyrBc2IdYw5
PPdv31Zm58VsdsEG//aM274iDFjlP+RtFIyes3fdZYZn83z8255cFajRUerWrl5v
omR70PWJS3tvRRhh96DXB5VewvgxMxEFrdBsysOCm69u8T58tFMzg6FEc/PE6Z/Z
zi4s6ARpHXhG4Ne0/sQ2O6m0ciEnZ/lHZa9LqWu1UY6+0QeO8nk2vSgps8KzMeO7
Wfzjz12WWJCC3pX5Wwpwwxh8SqIsGEBoh+M9KzGfzfjOBr08Ujt+x+FG19R7og+B
E0YdaGxUthQ=
=pZpF
-----END PGP SIGNATURE-----

------------------------------------------------------------------------------
Don't let slow site performance ruin your business. Deploy New Relic APM
Deploy New Relic app performance management and know exactly
what is happening inside your Ruby, Python, PHP, Java, and .NET app
Try New Relic at no cost today and get our sweet Data Nerd shirt too!
http://p.sf.net/sfu/newrelic-dev2dev