Bacula-users

Re: [Bacula-users] Network performance

2010-08-12 15:13:31
Subject: Re: [Bacula-users] Network performance
From: Bruno Friedmann <bruno AT ioda-net DOT ch>
To: bacula-users AT lists.sourceforge DOT net
Date: Thu, 12 Aug 2010 21:11:14 +0200
On 08/10/2010 04:13 PM, Hugo Silva wrote:
> Hello,
> 
> I'm backing up a server in Germany from a director in The Netherlands. 
> Using bacula, I can't seem to get past ~3000KB/s.
> 
> Here's an iperf result:
> [  3] local [fd-addr] port 16625 connected with [dir-addr] port 5001
> [ ID] Interval       Transfer     Bandwidth
> [  3]  0.0-10.1 sec    110 MBytes  91.2 Mbits/sec
> 
> 
> Googling doesn't seem to bring much more than setting "Maximum Network 
> Buffer Size" on the SD and FD.
> 
> I did (to 1048576 - same value I ran the iperf tests with), but there 
> were no changes; anyway, even with my system default socket buffer sizes 
> (256K) I manage to see ~90mbits/s.
> 
> 
> This leads me to think that perhaps the FD just doesn't have that much 
> data to send continuously to the SD, hence the low throughput. In theory 
> it could also be the storage that's too slow, but a crude test seems to 
> rule this out:
> 
> # dd if=/dev/zero of=/bacula/x bs=32k
> ^C24030+0 records in
> 24029+0 records out
> 787382272 bytes transferred in 7.044653 secs (111770197 bytes/sec)
> 
> Neither server seems to be CPU starved, either (I'm transfering 
> encrypted backups on a TLS connection using compression):
> 
> director:
> CPU:  3.4% user,  0.0% nice,  1.2% system,  0.0% interrupt, 95.3% idle
> Mem: 58M Active, 425M Inact, 405M Wired, 176K Cache, 316M Buf, 2084M Free
> Swap: 2048M Total, 2048M Free
> 
>    PID USERNAME PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
>     11 root     171 ki31     0K    64K CPU1    1 336.1H 100.00% {idle: cpu1}
>     11 root     171 ki31     0K    64K CPU2    2 335.9H 100.00% {idle: 
> emcpu2}
>     11 root     171 ki31     0K    64K CPU0    0 335.5H 100.00% {idle: cpu0}
>     11 root     171 ki31     0K    64K RUN     3 336.1H 98.49% {idle: cpu3}
> 46442 bacula    50    0 26796K  7268K select  0   0:01  7.08% {bacula-sd}
>      0 root     -68    0     0K   656K -       2   0:36  1.17% {em0 taskq}
> 
> FD:
> CPU: 10.9% user,  0.0% nice,  0.6% system,  0.3% interrupt, 88.2% idle
> Mem: 1734M Active, 1807M Inact, 2965M Wired, 1168K Cache, 827M Buf, 
> 1393M Free
> Swap: 16G Total, 868K Used, 16G Free
> 
>    PID USERNAME PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
>     11 root     171 ki31     0K   128K CPU7    7 5102.6 100.00% {idle: cpu7}
>     11 root     171 ki31     0K   128K CPU6    6 5098.5 100.00% {idle: cpu6}
>     11 root     171 ki31     0K   128K CPU3    3 5097.5 100.00% {idle: cpu3}
>     11 root     171 ki31     0K   128K RUN     0 5076.2 95.07% {idle: cpu0}
>     11 root     171 ki31     0K   128K CPU2    2 5076.6 92.48% {idle: cpu2}
>     11 root     171 ki31     0K   128K RUN     5 5100.7 87.99% {idle: cpu5}
>     11 root     171 ki31     0K   128K CPU4    4 5089.2 87.50% {idle: cpu4}
>     11 root     171 ki31     0K   128K CPU1    1 5088.6 85.35% {idle: cpu1}
> 40102 root     108    0 35016K  9584K CPU5    5   0:51 56.59% {bacula-fd}
>     12 root     -28    -     0K   352K WAIT    0  40:34  3.56% {swi5: +}
> 
> 
> 
> 
> So my question is, how do I go about working around this? Perhaps an 
> option to tell the FD to buffer stuff in memory and then send it in 
> bursts is available?
> 
> Please advise.
> 
Just also another point to check with the tls/encryption used

Did you check what are the available entropy are during your backup ...
cat /proc/sys/kernel/random/entropy_avail ( munin or collectd have plugin to 
monitor that )

If you run on low entropy all encryption jobs are slowed down or block until 
entropy get higher ...
This can be observed on ssl serveur refusing connexion etc ...

There's http://www.issihosts.com/haveged/ daemon which can help you to maintain 
a high level of that.

  Headless and diskless servers with limited input have relied on entropy
  added by interrupts flagged with IRQF_SAMPLE_RANDOM. However, this
  feature will be disappearing from the Kernel soon.
  One solution is to run a daemon to add entropy from userspace to the
  pool. Example daemons can be found here:
  * http://www.vanheusden.com/aed/
  * http://www.vanheusden.com/ved/
  * http://egd.sourceforge.net/
  distributions should provide these or similar daemons as options for users who
  require additional entropy sources to keep /dev/random from blocking on
  read.
  The Kernel thread discussing this thread can be found here:
   http://lkml.org/lkml/2009/4/6/283
   commit 9d9b8fb0e5ebf4b0398e579f6061d4451fea3242
  What:   IRQF_SAMPLE_RANDOM
  Check:  IRQF_SAMPLE_RANDOM
  When:   July 2009
  Why:    Many of IRQF_SAMPLE_RANDOM users are technically bogus as
  entropy
  sources in the kernel's current entropy model. To resolve this, every
  input point to the kernel's entropy pool needs to better document the
  type of entropy source it actually is. This will be replaced with
  additional add_*_randomness functions in drivers/char/random.c

Hope this give you also another way to resolve the case.



-- 

Bruno Friedmann  bruno AT ioda-net DOT ch

Ioda-Net Sàrl www.ioda-net.ch

  openSUSE Member
    User www.ioda.net/r/osu
    Blog www.ioda.net/r/blog

  fsfe fellowship www.fsfe.org
  (bruno.friedmann (at) fsfe.org )

  tigerfoot on irc

GPG KEY : D5C9B751C4653227

------------------------------------------------------------------------------
This SF.net email is sponsored by 

Make an app they can't live without
Enter the BlackBerry Developer Challenge
http://p.sf.net/sfu/RIM-dev2dev 
_______________________________________________
Bacula-users mailing list
Bacula-users AT lists.sourceforge DOT net
https://lists.sourceforge.net/lists/listinfo/bacula-users