Operating System - HP-UX
1833874 Members
2253 Online
110063 Solutions
New Discussion

Re: Stripe size for performance with Oracle Database

 
Bill Slaughter
Occasional Contributor

Stripe size for performance with Oracle Database

I am trying to get the best performance for my Oracle Database (Oracle Apps 10.7).

For a given physical I/O will LVM read in a different amount? What if we use different strip sizes, or does it matter?

What I mean is:

1) Oracle app is reading a block of data.

The following are my stipe sizes:

2a) LVM 64k stripe is used
2b) LVM 128K stripe size is used
2c) LVM "Distributed" 4MB PE size (16 luns)

Is LVM reading from disk any different amount based upon the stripe/distributed size?

Thanks
6 REPLIES 6
Tom Geudens
Honored Contributor

Re: Stripe size for performance with Oracle Database

Hi,
You would benefit from having the DB_BLOCK_SIZE equal to your stripesize. More important is that you spread your mountpoints over multiple disks/lun's if possible.
So
/oraclemountpoint1 -> vgoracle1 -> disk1
/oraclemountpoint2 -> vgoracle2 -> disk2
/oraclemountpoint3 -> vgoracle3 -> disk3

Hope this helps,
Tom
A life ? Cool ! Where can I download one of those from ?
Carlos Fernandez Riera
Honored Contributor

Re: Stripe size for performance with Oracle Database

Are your database on raw devices?

How many physical disks are on vg?

If strip size is 64k and db_block_size is 8k

you shuold set db_file_multiblock_read_count = 8. Each read made from oracle will retrive 8 block of 8k, the strip size.
unsupported
MARTINACHE
Respected Contributor

Re: Stripe size for performance with Oracle Database

Hi,

If you use filesystem instead of raw devices and if you have "Online JFS", mount your FS with "mincache=direct" option.
This will bypass the LVM cache and increase your performance.

regards,

Patrice.
Patrice MARTINACHE
James R. Ferguson
Acclaimed Contributor

Re: Stripe size for performance with Oracle Database

Hi:

There are many considerations here, and as always, ???YMMV??? [your-mileage-may-vary]. In general, a stripe size which equals the IO size will be the fastest. For HFS filesystems the IO size is 8KB. For VxFS (JFS) ones this will vary. Striping may improve performance if you are doing primarily sequential IO. IF your access is primarily random, I???d expect less or little gain over un-striped environments.

If you are using VxFS filesystems and have the Online JFS component (and I hope you do), then mount your oracle filesystems with ???convosync=direct, mincache=direct, delaylog, nodatainlog???. Also make sure that your buffer cache is small so that you are not double-buffering ??? once by Oracle and once by Unix.

Regards!

...JRF...
Sridhar Bhaskarla
Honored Contributor

Re: Stripe size for performance with Oracle Database

Hi Bill,

The thumb rule is that splitting an I/O will impose a great penalty and this is the reason why we keep the db_block_size less than or equal to the stripe size.

For small Random I/Os, stripe size plays a minor role but you can go with 64k. For large sequential I/Os, the stripe size can be either 128k or 256k as there will be delays in often repositioning the head with smaller stripes. Extent level striping may be better than non-striped the disk but is far useful in conjunction with mirroring where there will be a significant gain for reads with a small penalty on writes. 128k seems to be general recommendation but I would decide what you have in the disk storage.

And I would suggest to simulate your application and loadtest it with different options and choose the one that gives you the best performance.

-Sri
You may be disappointed if you fail, but you are doomed if you don't try
Tim D Fulford
Honored Contributor

Re: Stripe size for performance with Oracle Database

Bill

The answer is ... it depends. But according to teh SAME paper below it is about 1MB

http://forums.itrc.hp.com/cm/components/FileAttachment/0,,0x4a8a8cc5e03fd6118fff0090279cd0f9,00.pdf

Regards

Tim
-