cancel
Showing results for 
Search instead for 
Did you mean: 

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

neal_stack2
Explorer
0 Kudos
1,302

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

View Entire Topic
dan_thrall
Participant
0 Kudos

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
former_member89972
Active Contributor
0 Kudos

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

dan_thrall
Participant

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

neal_stack2
Explorer
0 Kudos

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.