Re: Matching storage stripe size with ASM allocation unit?
Date: Sun, 25 May 2008 00:06:25 -0400
ASM allocation unit in 10g can be only 1M and changing it using underscore parameter can only be done to a higher value in the powers of two. This is used to reduce overhead of managing extent maps for VLDB. 11g allows do to it in supported way per disk group and it also manages extents differently but that's another topic.
The only way for you would be to switch from coarse striping to fine striping, which is 128K but it can be even worse if it doesn't match SAN stripe size and ASM stripe size. In reality, it's relatively rare that you can have any conflicts with standard ASM stripe size (I saw only one fancy case when fine striping overlapped and created hotspot on one of the physical spindles) so you would be better off just leaving AU size default.
If we are talking about proper storage allocation for ASM, then every ASM disk should map to a single physical spindle (or two mirrored spindles). At least this is the way it was designed for and that's what assumed for proper IO distribution and rebalancing. In real life, vast majority of setups carve LUN's from RAID pools and it becomes very difficult to track down real physical layout. This is when it becomes dangerous as you are loosing control over physical allocation and ASM IO balancing becomes useless. It gets worse when LUNs allocated in different sizes and from differently performing pools. Can get really ugly even without counting bugs with ASM using different disk sizes for the same diskgroup.
Unfortunately, the chances to change it for you are close to zero because storage administrators are usually not very collaborative to say the least and they typically "know better" how to manage storage and everybody knows that modern storage arrays are intelligent enough to automagically resolve hot spots and avoid hot disks. </sarcasm>
On 23-May-08, at 12:26 PM, Yong Huang wrote:
> I heard an Oracle consultant suggest that the storage should be
> created with
> stripe size 1M for ASM, because the default ASM allocation unit
> _asm_ausize) is 1M. He says most shops have much smaller stripe
> size. I asked
> since it's too late for the storage team, what if we lower our ASM
> unit size? He gives no comment except he doesn't recommend.
> Now I think about it. The ASM 1M allocation unit is for allocation or
> deallocation. It can't be I/O chunk size, which is still from
> db_block_size up
> to that multiplied by db_file_multiblock_read_count. The ideal
> stripe size may
> be typical I/O size dictated by the most frequently run SQL divided
> by number
> of disks in the striping setup (or larger than that). The ASM 1M
> size only
> plays a role when you create, resize or drop a datafile, not
> normally done
> anyway. Comments are welcome.
> Yong Huang