Skip to Content
0

How do you control the I/O size for ASE Backup Server?

Nov 11, 2016 at 03:07 PM

263

avatar image

Hello,

Is there a way to control the I/O size that Backup Server reads/writes to disk?

I've tried various values for the DUMP DATABASE "blocksize=" clause but this doesn't seem to change it.

For example, I created a dump with blocksize=65536 and it appears that when I load it, it uses a dbiosize=1048576:

Backup Server session id is: 46. Use this value when executing the 'sp_volchanged' system stored procedure after fulfilling any volume change request from the Backup Server.
Backup Server: 6.28.1.1: Dumpfile name 'delphix163150BB4A' section number 1 mounted on disk file '/export/home/sybase/dump/delphix.s2.full.11_10.default'
Backup Server: 4.166.1.1: Using dbiosize of 1048576 bytes for device /export/home/sybase/dump/delphix.s2.full.11_10.default.
Backup Server: 4.165.1.1: Using iocount of 4 for device /export/home/sybase/dump/delphix.s2.full.11_10.default.
Backup Server: 4.166.1.2: Using zonesize of 4194304 bytes for device /export/home/sybase/dump/delphix.s2.full.11_10.default.
Backup Server: 4.166.1.3: Using blocksize of 65536 bytes for device /export/home/sybase/dump/delphix.s2.full.11_10.default.
Backup Server: 4.165.1.2: Using numzones of 4 for device /export/home/sybase/dump/delphix.s2.full.11_10.default.

And if I create a dump with blocksize=2097152, it also uses a dbiosize=1048576 when I load it:

Backup Server session id is: 1. Use this value when executing the 'sp_volchanged' system stored procedure after fulfilling any volume change request from the Backup Server.
Backup Server: 6.28.1.1: Dumpfile name 'delphix163150C5B6' section number 1 mounted on disk file '/export/home/sybase/dump/delphix.s3.full.2097152'
Backup Server: 4.166.1.1: Using dbiosize of 1048576 bytes for device /export/home/sybase/dump/delphix.s3.full.2097152.
Backup Server: 4.165.1.1: Using iocount of 4 for device /export/home/sybase/dump/delphix.s3.full.2097152.
Backup Server: 4.166.1.2: Using zonesize of 4194304 bytes for device /export/home/sybase/dump/delphix.s3.full.2097152.
Backup Server: 4.166.1.3: Using blocksize of 2097152 bytes for device /export/home/sybase/dump/delphix.s3.full.2097152.
Backup Server: 4.165.1.2: Using numzones of 4 for device /export/home/sybase/dump/delphix.s3.full.2097152.

It seems like the Backup Server shared memory "-m" parameter has the biggest influence but I wasn't sure if I was overlooking something that would allow me greater control.

Thanks,

Neal

10 |10000 characters needed characters left characters exceeded
* Please Login or Register to Answer, Follow or Comment.

1 Answer

Best Answer
Daniel Thrall
Dec 02, 2016 at 09:12 PM
0

Hi Neal,

I'll spare most of the inner math here and go straight to the final math. What you need to know is the max number of zones (numzones) is 5 and the max dbiosize is 2MB. This means the peak optimization is numzones*dbiosize or 10MB per stripe.

in order to maximize memory per stripe:
Distinct_devives/stripes > 1 –the higher this number is, the more memory per stripe will be used. This could mean reducing stripes for lower device counts.
To minimally meet the maximum dbiosize per stripe:
(-m/-P) >= 1 * 5 *2, or simply put -m/-P >= 10
Putting it all together, the max memory available to stripes can be seen via this easy formula:
(-m/-P) >= Max(1,Distinct_dev/stripes) * 5 *2

Below is a very crude procedure that can be used to figure out what is necessary configuration wise inorer to hit the max 5*2 combination based on number of stripes used and devices under the database.
Use this at your own risk!

HTH
Dan


create proc stripe_memory
(@dbname varchar(30)=null,@stripes int=null) as
if (@dbname is null or @stripes is null)
begin
print "Usage: stripe_memory
<database_name>, <number of stripes>"
return
end
declare @devct int
declare @iocount int
declare @maxmem int
declare @m int
select @devct = count(distinct vdevno) from master..sysusages where dbid = db_id(@dbname)
select @iocount = @devct/@stripes
if (@iocount) <=0
select @iocount=1
select @maxmem = (10 * @iocount)
select @m=@stripes*@maxmem
print "Database %1!, using %2! devices and %3! Stripes" ,@dbname, @devct, @stripes
print "requires at least %1! MB per stripe (-m/-P) with -P >= %2!", @maxmem, @stripes
print "The inputs requested minimally require -m = %1! and -P = %2!", @m, @stripes
print "or a combination of -m/-P >= %1!", @maxmem

1> stripe_memory repro,20
2> go
Database repro, using 7 devices and 20 Stripes
requires at least 10 MB per stripe (-m/-P) with -P >= 20
The inputs requested minimally require -m = 200 and -P = 20
or a combination of -m/-P >= 10


1> stripe_memory repro,3
2> go
Database repro, using 7 devices and 3 Stripes
requires at least 20 MB per stripe (-m/-P) with -P >= 3
The inputs requested minimally require -m = 60 and -P = 3
or a combination of -m/-P >= 20
Show 3 Share
10 |10000 characters needed characters left characters exceeded

Hi Dan

Is the "-m" calculated above recommended for using as "-mNN" for the backupserver command line ?

Are above calculations for LINUX or valid for all *NIXes in general and AIX in particular ?

TIA

Avinash

0

Hi Avinash,

You are correct. -m here is for the memory setting and -P is the number of service threads, both indicated in the RUN_file for the Backup Server.

This calculation is universal to Backup Server on all platforms.


Dan

1

Thanks for the detailed answer Dan! This is very helpful!

Sorry, I didn't reply sooner but I wasn't emailed a notification that you answered my question.

0