Tips for tuning imsbackup, especially with Legato Networker

We've been working really hard to improve our backup performance. I

thought I'd capture what we've done so far. We've been able to nearly

double our throughput to 35-37MB/second. We were well below 20MB/sec a

few months ago

1) If you're running Sun Cluster, do not use the "Global" (aka pxfs)

filesystem for mail store partitions. If you do, you'll be CPU-bound.

2) Set the noatime option on your mail spool partitions. This will

eliminate a write to update the access time at every read and was a win

for us.

3) If you are using Legato Networker, or any other backup software that

uses imsbackup in a pipeline make sure you apply the fifofs (pipe)

performance patch. It's patch 117471 for Solaris 9 and patch 109454 for

Solaris 8. This patch improved our backup performance by nearly 10MB/sec.

4) If you are using Legato Networker (version 7.1) and doing

disk-to-disk backups, do not use the "Advanced File Type" device. This

device type uses the nsrfile packet size to write to disk, so disk write

block sizes end up between 2KB and 8KB, which will totally kill

performance. We don't know if the same problem exists in later versions

of Networker. This improved our tape cloning performance from about

20-24MB/sec to 50-70MB sec. We also found that running one nsrmmd

process per CPU to maximize performance.

5) Consider increasing the imsbackup blocksize from the default of 10KB.

My testing showed a sweet spot at 64KB (-b 128). A block size of 128KB

(-b 256) was sometimes faster, and sometimes slower. If you're using

imsasm, you'd make the change in /usr/lib/nsr/imsasm, and you need to

change it for imsrestore as well. Here's a table of my test results:

blocksizeSysUserWall Clock

default15.1637.6907:22.3

default14.1536.0706:26.2

default14.5637.5706:59.9

default14.8535.8607:32.9

default14.2636.8806:00.6

default14.3737.3505:11.1

-b 64 13.2834.2805:18.6

-b 64 12.1432.6904:51.7

-b 64 12.2933.5904:26.7

-b 64 12.1234.3804:29.9

-b 64 12.7734.2704:27.7

-b 64 12.5332.8404:34.4

-b 128 12.5931.0604:43.1

-b 128 12.7134.8204:16.4

-b 128 12.4227.1204:13.5

-b 128 11.8732.5404:35.6

-b 128 11.9833.7304:31.6

-b 128 11.4534.6504:13.8

-b 256 11.7226.6304:12.0

-b 256 11.8925.0904:02.2

-b 256 12.6827.2304:29.1

-b 256 11.9628.9504:09.9

-b 256 12.4630.605:04.4

-b 256 11.8626.7905:13.6

-b 512 11.9326.3804:16.4

-b 512 11.6927.8104:26.2

-b 512 12.4426.1204:42.7

-b 512 11.3726.2304:24.4

-b 512 12.0434.0904:51.5

-b 512 11.5627.0304:27.3

Other items we're looking at are:

1) adding more spindles to our disk-to-disk array to improve write performance

2) Use jumbo frames to improve network performance and reduce CPU overhead

If anyone else has tips for improving backup performance, I'd love to

hear them!

-jeff

[3297 byte] By [jwasilkoa] at [2007-11-27 8:29:08]
# 1

Hi Jeff,

Thanks for the excellent summary of your results. Given that you have access to production systems your own experience reflecting real-world-results is very useful.

>> If anyone else has tips for improving backup performance, I'd love to hear them!

There are the default networking tuning tips (for both mail-store and backup server) but I suppose you have already gone through them e.g.

/usr/sbin/ndd -set /dev/tcp tcp_recv_hiwat 65536

/usr/sbin/ndd -set /dev/tcp tcp_xmit_hiwat 65536

I suppose the question at this point is.. what is the current bottleneck, CPU/Network/I/O?

Depending on which one is slowing things down will determine where the effort needs to be put.

Regards,

Shane.

shane_hjortha at 2007-7-12 20:19:20 > top of Java-index,E-Mail, Calendar, & Collaboration,Sun Java System Messaging Server...
# 2

> Hi Jeff,

>

> Thanks for the excellent summary of your results.

> Given that you have access to production systems your

> own experience reflecting real-world-results is very

> useful.

You're welcome! I hope it's useful to other folks.

> /usr/sbin/ndd -set /dev/tcp tcp_recv_hiwat 65536

> /usr/sbin/ndd -set /dev/tcp tcp_xmit_hiwat 65536

Yup, we've got those set.

> I suppose the question at this point is.. what is the

> current bottleneck, CPU/Network/I/O?

I think we're close to being CPU-bound on both the JES host and the Legato side. I'm curious how much jumbo frames would help us in terms of reducing kernel time.

The backup server is an easy upgrade, since it's a 280R, but the JES cluster is a pair of 1280s (8CPU). Adding CPUs to those are expensive....

If you'd like to take a look at the systems performance, http://orca.usg.tufts.edu/orcallator/o_oak-daily.html is the active node in the cluster and

http://orca.usg.tufts.edu/orcallator/o_ash-daily.html is the inactive node (but was active until I did the pipe patch at 17:00 today, so it's useful to use for history.

http://orca.usg.tufts.edu/orcallator/o_alexandrite-daily.html is the backup server

Note that the disk reads/write rate and ops/sec are inflated because orca is counting the disksuite devices as well as the regular devices, so everything is roughly double.

-j

jwasilkoa at 2007-7-12 20:19:20 > top of Java-index,E-Mail, Calendar, & Collaboration,Sun Java System Messaging Server...
# 3

Hi Jeff,

> I suppose the question at this point is.. what is

> the

> current bottleneck, CPU/Network/I/O?

>

> I think we're close to being CPU-bound on both the

> JES host and the Legato side. I'm curious how much

> jumbo frames would help us in terms of reducing

> kernel time.

http://www.psc.edu/~mathis/MTU/AlteonExtendedFrames_W0601.pdf

They talk about a large drop in CPU utilisation (around 50%) *results may vary

To get the best throughput you would want end-to-end jumbo frames which mean you may need to tweak/upgrade switches/routers between the two systems.

> The backup server is an easy upgrade, since it's a

> 280R, but the JES cluster is a pair of 1280s (8CPU).

> Adding CPUs to those are expensive....

Agreed. If you can get the JES cluster to be the one waiting for the backup server, definitely the best option. I take it that neither system is running Solaris 10 (so you could use dtrace to probe into the underlying high CPU use?).

> If you'd like to take a look at the systems

> performance,

> http://orca.usg.tufts.edu/orcallator/o_oak-daily.html

> is the active node in the cluster and

> http://orca.usg.tufts.edu/orcallator/o_ash-daily.html

> is the inactive node (but was active until I did the

> pipe patch at 17:00 today, so it's useful to use for

> history.

One thing I noticed is the 'new process' spawn rate is pretty high (~200/s). Any idea what is causing this?

Also have you considered binding the imsbackup processes to a specific cpu, to stop the processes being bounced around? May not make much difference but something to try.

Regards,

Shane

shane_hjortha at 2007-7-12 20:19:20 > top of Java-index,E-Mail, Calendar, & Collaboration,Sun Java System Messaging Server...
# 4

>

> http://www.psc.edu/~mathis/MTU/AlteonExtendedFrames_W0

> 601.pdf

>

> They talk about a large drop in CPU utilisation

> (around 50%) *results may vary

Thanks for the pointer. It'd be nice to get something close to 50% :-)

> o get the best throughput you would want end-to-end

> jumbo frames which mean you may need to tweak/upgrade

> switches/routers between the two systems.

We're set for that. I've been working on setting up a separate backup VLAN that only carries jumbo frames.

> Agreed. If you can get the JES cluster to be the one

> waiting for the backup server, definitely the best

> option. I take it that neither system is running

> Solaris 10 (so you could use dtrace to probe into the

> underlying high CPU use?).

Yeah, we're still at Solaris 9. dtrace would have made a lot of this easier!

> One thing I noticed is the 'new process' spawn rate

> is pretty high (~200/s). Any idea what is causing

> this?

I think it's a SAN health monitoring script called lunmapper we got from Sun. It's written in ksh, and is forking lots of stuff (like echo and expr). We run it out of our monitoring system every 5 minutes (I think). I'll look into running it less often.

> Also have you considered binding the imsbackup

> processes to a specific cpu, to stop the processes

> being bounced around? May not make much difference

> but something to try.

Hmm. Hadn't thought of that. We actually run 25 backup jobs at once at peak, so there's more processes than CPUs. Not sure it'd help much then.

Thanks for the tips!

-j

jwasilkoa at 2007-7-12 20:19:20 > top of Java-index,E-Mail, Calendar, & Collaboration,Sun Java System Messaging Server...