Skip to Content

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

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

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

1 Answer

  • Best Answer
    Dec 02, 2016 at 09:12 PM

    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
    
    Add comment
    10|10000 characters needed characters exceeded