Hi Stephen,
Hi all,

Thanks for your feedback and sharing your experience.
Here some clarification on my side.


*** Regarding BPC being not reliable.

I don't deny that BPC works very  well in many situations, and can sustain
heavy load etc. But in my case it was not the flawless setup I imagined at
first. Of course, the main problem  is the small amount of memory. Looking
in the dmesg logs, I could spot regularly OOM messages, the kernel killing
the backuppc_dump process, etc.  Now it is a bit unfair  of me blaming BPC
when actually  the main culprit  is the lack of  memory. But the  thing is
that BPC  is quite unhelpful in  these situations. Server logs  are mostly
useless, no  timestamps, and  there is  no attempt  to restart  again, but
instead BPC goes into a long  process of counting references, etc, meaning
most  of the  server time  is  spent in  (apparently) unproductive  tasks.
Again, the main  culprit is the platform, and actually  BPC never lost any
data (afaik), and  always recovered somehow. Still, there  are some traces
of corruption  in the db (like  warning about reference being  equal to -1
instead of 0), indicating that maybe BPC is not atomic.


*** Regarding the 256MB requirement.

Admittedly this  is very demanding  and very  far off most  feedbacks I've
seen on the net.  Stephen's setup of a recycled Dell PE  1950 (8 cores, 16
GB RAM)  seems more typical  than my  poor lacie-cloudbox with  256MB. But
when I  monitor memory  usage, for  instance when doing  a full  backup of
600k-file  client, BPC  dump/rsync processes  consume consistently  around
100MB memory (htop/smem). Looking at rsync  page, they say that rsync 3.0+
should consume 100bytes/file, so a total of 60MB for rsync. So I don't see
any blocking  point why BPC  would not fit in  a 256-MB memory  budget. Of
course it  will be slower, but  it must work.  This WE I again  spent some
time tuning down the Lacie-Cloudbox, stripping away all useless processes,
like those  hungry python stuff.  Now, in idle,  the Lacie has  200MB free
physical + 200MB free swap space, and  in that setup BPC worked for 2 days
w/o  crash doing  a full  55GB,  650k files  backup, in  2 hours,  7.5MB/s
(almost  no changes,  hence the  very  high speed  of course).  For now  I
disabled all my machines but a few, and will enable the remaining ones one
by one. I have good hope that it  will work again. Now, my wishes would be
to restore  some other services,  but this will likely  require increasing
the swap space.


*** Regarding BPC being slow

I only give BPC 256MB, so  I should expect too much regarding performance.
That I fully agree. However when I say  it is slow, I mean it is slow even
if I take into account that fact.  Transfer speed is ok-ish; it uses rsync
at its best,  which requires some heavy processing sometimes.  But I don't
understand  why  it needs  so  much  time  for  the remaining  tasks  (ref
counting, etc). I'm actually convinced  (perhaps naively) that this can be
significantly improved. See further down.


*** Regarding "trashing" rsync
 + @kosowsky.org about designing a totally new backup program

My statement  was... too brutal I  guess ;-) I fully  agree with Stephen's
comment. And I don't  want to create a new program  from scratch. rsync is
one  of  the best  open-source  sync  program.  Unison and  duplicity  are
basically  using rsync  internally. I  do think  however that  BPC can  be
significantly improved.

- Flatten the backup hierarchy

  Initially BPC  was a  "mere" wrapper around  rsync. First  duplicating a
  complete hierarchy with  hard-links, then rsync'ing over it.  It had the
  advantage of simplicity but is very  slow to maintain, and impossible to
  duplicate.  Now  the  trend in  4.0alpha  was  to  move  to a  custom  C
  implementation of  rsync, where  hierarchy only  stores attrib  files. I
  think that we  can improve the maintenance phase  further (ref counting,
  backup deletion...)  by flattening this  structure into a  single linear
  file, and  by listing  once for  all the references  in a  given backup,
  possibly  with caching  of references  per directory.  Directory entries
  would be  more like git objects,  attaching a name to  a reference along
  with  some  metadata. This  means  integrating  further with  the  inner
  working of rsync. It would be fully compliant with rsync from the client
  side.  But refcounting  and backup  deletion should  then be  equivalent
  to  sorting and  finding  duplicate/unique entries,  which  can be  very
  efficient. Even  on my Lacie  sorting a  600k-line file with  32B random
  hash entries takes only a couple seconds.

- Client-side sync

  Sure, this  must be  an optional feature,  and I agree  this is  not the
  priority. Many  clients will still  simply run rsyncd or  rsync/ssh. But
  the client-side sync would allow  to detect hard links more efficiently.
  It will also  decrease memory usage on the server  (see rsync faq). Then
  it opens  up a  whole new  set of  optimization, delta-diff  on multiple
  files...


*** Regarding writing in C

Ok,  I'm not  a  perl fan.  But  I agree,  it is  useful  for stuff  where
performance  does not  matter, for  website  interface, etc.  But I  would
rewrite in C the ref counting part and similar.

Kind regards,
Michaël



------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
_______________________________________________
BackupPC-devel mailing list
BackupPC-devel@lists.sourceforge.net
List:    https://lists.sourceforge.net/lists/listinfo/backuppc-devel
Wiki:    http://backuppc.wiki.sourceforge.net
Project: http://backuppc.sourceforge.net/

Reply via email to