[RESOLVED]low speed in running oracle rman with mhvtl ..(about 500kB/s in maximum speed)

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

[RESOLVED]low speed in running oracle rman with mhvtl ..(about 500kB/s in maximum speed)

donghan
This post was updated on .
Hey guys, I run rman with mhvtl. but the backup speed is too low(500kB/s).
the mhvtl debugging prints indicate that the block size is 64kB and the scsi command is running synchronous.

when i set blocksize to 1M in rman configure , the backup process is hang.(i suppose mhvtl can support 2M block size, is true?)

does any one know how to speed up this backup operation?

Thanks.


my system:
  linux kernel 2.6.18
  mhvtl 0.18.17
  oracle10
  obtool 10.2
 

rman configure:

RMAN> show all;

using target database control file instead of recovery catalog
RMAN configuration parameters are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO 'SBT_TAPE';
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup1/ctl_%F';
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE SBT_TAPE TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET;
CONFIGURE DEVICE TYPE 'SBT_TAPE' BACKUP TYPE TO BACKUPSET PARALLELISM 1;
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE SBT_TAPE TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE SBT_TAPE TO 1; # default
CONFIGURE CHANNEL 1 DEVICE TYPE DISK FORMAT   '/backup1/backup_%U';
CONFIGURE CHANNEL 2 DEVICE TYPE DISK FORMAT   '/backup2/backup_%U';
CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' MAXOPENFILES 1 PARMS  '';
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/home/oracle/oracle/product/10.2.0/db_1/dbs/snapcf_orcl.f'; # default


obtool

[root@localhost ~]# lsscsi -g  
[0:0:0:0]    disk    ATA      ST3160815AS      4.AA  /dev/sda   /dev/sg0  
[8:0:0:0]    storage IET      Controller       0001  -         /dev/sg1  
[8:0:0:1]    disk    IET      VIRTUAL-DISK     0001  /dev/sdb   /dev/sg2  
[9:0:0:0]    mediumx STK      L700             550V  /dev/sch0  /dev/sg11  
[9:0:1:0]    tape    IBM      ULT3580-TD5      550V  /dev/st0   /dev/sg3  
[9:0:2:0]    tape    IBM      ULT3580-TD5      550V  /dev/st1   /dev/sg4  
[9:0:3:0]    tape    IBM      ULT3580-TD4      550V  /dev/st2   /dev/sg5  
[9:0:4:0]    tape    IBM      ULT3580-TD4      550V  /dev/st3   /dev/sg6  
[9:0:8:0]    mediumx SPECTRA  PYTHON           550V  /dev/sch1  /dev/sg12  
[9:0:9:0]    tape    IBM      ULT3580-TD4      550V  /dev/st4   /dev/sg7  
[9:0:10:0]   tape    IBM      ULT3580-TD4      550V  /dev/st5   /dev/sg8  
[9:0:11:0]   tape    IBM      ULT3580-TD4      550V  /dev/st6   /dev/sg9  
[9:0:12:0]   tape    IBM      ULT3580-TD4      550V  /dev/st7   /dev/sg10  


ob> mkdev  -t library -o -a localhost:/dev/sg11 lib01  
ob> mkdev -t tape -o -a localhost:/dev/sg4 -l lib01 -d 1 tape01  
ob> lsdev
library             lib01            in service          
  drive 1           tape01           in service    

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: low speed in running oracle rman with mhvtl ..(about 500kB/s in maximum speed)

Mark Harvey
What 'logging level' were you running when you measured the performance ?

Setting logging to '0' help the performance ?

What sort of performance do you get if you try 'dd'

e.g.

# time dd if=/dev/zero of=/dev/nstXX bs=64k count=1000

(writing 1000 64k blocks in the above example)

Cheers
Mark
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: low speed in running oracle rman with mhvtl ..(about 500kB/s in maximum speed)

donghan
Thanks,Mark.
I have closed all debug information.
And I tryed "dd if=/dev/zero of=/dev/st0 bs=64k count=1600", it's about 28MB/sec. far fast than do write in rman(500KB/s).

And I had try direct do scsi_done when received WRITE_6 in  the mhvtl queuecommand(). so it doesn't perform real write operation. in this situation, I have about 100MB/s write speed with "dd" but still no improve with rman.
It seems that it's rman problem...may be I have not  configure it properly...
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: low speed in running oracle rman with mhvtl ..(about 500kB/s in maximum speed)

citronik
In reply to this post by donghan
Not sure if this will really help you:
I am using rman backups to real hw and mhvtl and speed is about the same.
I am getting about 25MB/s for both.
So it won't be a rman issue.
:j
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: low speed in running oracle rman with mhvtl ..(about 500kB/s in maximum speed)

donghan
hey citronik,thanks for your reply.

i see your backup speed is far faster than mine.could you tell me what configuration is your hw?may be my server is less powerful :(

and i make bold to ask how speed is it if you do "SCSI_COMPLETE" directly at the scsi WRITE_6 command processing? it's a little boost when do this trick with mhvtl on my system. so i think may be it's my rman configuration wrong.

P.S.
i use patch below to return directly in WRITE_6 command.

diff --git a/kernel/mhvtl.c b/kernel/mhvtl.c
index 0084e2e..816d3ee 100644
--- a/kernel/mhvtl.c
+++ b/kernel/mhvtl.c
@@ -644,6 +644,15 @@ static int vtl_queuecommand_lck(struct scsi_cmnd *SCpnt, done_funct_t done)
                errsts = resp_report_luns(SCpnt, lu);
                break;
 
+  case WRITE_6:          
+    SCpnt->result = DID_OK << 16;  
+    if (done)            
+      done( SCpnt);      
+    else
+      printk("%s FATAL, line %d: SCSI done_funct callback => NULL\n",
+          __func__, __LINE__);
+    return 0;        
+
        /* All commands down the list are handled by a user-space daemon */
        default:        // Pass on to user space daemon to process
                errsts = q_cmd(SCpnt, done, lu);

Many Thanks!
Loading...