Skip to Content

How to Maximise Sybase ASE IO during dump and load?

I have read all SAP guides to maximise dump and load throughout but I always end up with maximum sybase io of 250gb/hr.

I have used :

1. Shared memory increase for backupserver

2. Number of stripes (higher)

3. Block size

And tried all combinations . On a disk IO of 1500 gn/hr sybase overall throughput io of 250gb/hr is very lower side .

Can you please guide me how can I achieve over 500 gb/hr?



Add comment
10|10000 characters needed characters exceeded

  • Where are you measuring the 'disk IO of 1500'? Is this the throughput for all database devices (that the db sits on) as well as all dump devices?

    Are you compressing the dumps?

    I'd recommend updating your question with these additional details.

  • I was working on this problem a while ago. Using the Linux strace command to see backupserver calls during a backup, I saw what looks like lseek calls to ever increasing, but not necessarily contiguous, byte offsets, where each lseek call is followed by a 4 kbyte read. For example:

    0.000069 poll([{fd=3, events=POLLIN}, {fd=6, events=POLLIN}, {fd=7, events=POLLIN}, {fd=12, events=POLLIN}, {fd=14, events=POLLIN}], 5, 0) = 0 (Timeout) <0.000007>
    0.000025 lseek(8, 11123294208, SEEK_SET) = 11123294208 <0.000006>
    0.000019 read(8, "\0\211\0\0\3\0\0\0\330\4\0\0c\0\ ...snip... \0\0"..., 4096) = 4096 <0.000039>
    0.000059 poll([{fd=3, events=POLLIN}, {fd=6, events=POLLIN}, {fd=7, events=POLLIN}, {fd=12, events=POLLIN}, {fd=14, events=POLLIN}], 5, 0) = 0 (Timeout) <0.000006>
    0.000026 lseek(8, 11127488512, SEEK_SET) = 11127488512 <0.000006>
    0.000018 read(8, "\0\212\0\0\3\0\0\0\330\4\0\0c\0\0 \0\0\0\0"..., 4096) = 4096 <0.000062>

    So this isn't just a straight sequential read using large block size I/O (eg., like video streaming). Depending on the disk controller and the layout of the hard disk, I think this sometimes causes slowdowns during dumps (maybe a extra rotation of the disk per read,etc)

    IMHO, the fastest way to do dump and load a large number of databases, assuming your source and destination ASE servers are the same version, is to use the "quiesce database" command and then backup the sybase devices at the OS level.

    Of course, quiescing a db stops all data changes to the databases. That might not be acceptable in many situations.

  • Follow
  • Get RSS Feed

1 Answer

  • May 04, 2018 at 07:57 PM

    Not sure what kind of disk storage and meory configuration your server has.

    Check if at OS level there is enough memory left for the stripes and if there are other processes competing for OS resources.

    ipcs will tell you shared memory used by ASE. And vmstat or some such tool will tell you remaining memory available.

    We use flash disks for both database raw devices and filesystem storage to get dumps at decent 1+TB/hr on file system. Shared memory is at (sybmultbuf) 2GB per stripe. Using 20 stripes for a 2TB database, with compression level of 2 we get the full database dump done in 30 to 35 minutes resulting in a total of 600+GB files.



    Add comment
    10|10000 characters needed characters exceeded