Re: Stripe Block Size.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2004-04-05 at 11:58, Jason C. Leach wrote:
> Matt Gulick wrote:
> 
> >On Mon, 2004-04-05 at 10:51, Jason C. Leach wrote:
> >  
> >
> >>hi,
> >>
> >>I have a Promise SX6000 in a RAID5 using Linux Debian on an AMD 
> >>AthelonXP 2500+.  This array will store mostly GIS data. So about 30% 
> >>large files (a few hundred megs) and 70% small files (several megs).  I 
> >>am curious what stripe block size to use 4-64k (the fs is reiserfs).  I 
> >>was thinking 32k for the stripe block size.
> >>
> >>Thanks,
> >>J.
> >>    
> >>
> >
> >J,
> >
> >If the large files are Audio/Video for streaming, then you will want a
> >larger stripe size.  If not, go with the smallest that you can (a small
> >~.h or text file will take the same amount of space as your stripe
> >size).
> >
> >The best way to set this is to consider the total volume size.  What
> >will be the allocation block size be for that size of volume if it were
> >on a single disk for that OS?.  Set you allocation size to be the same
> >or some multiple of that value.
> >
> >  
> >
> Thanks for the reply. The total volume size will be 800G. I'm not sure 
> what reiserfs/Linux would use for the block size if that were on one 
> disk.  Can you give me some tips? 
> 
> A significant portion of the files will be a few megs and above, not 
> really any .h or other small text files (say 1%).  No streaming 
> audio/vid. The GIS data will be csv files, shape files, large TIF 
> files.  Is it better to go smaller then larger with the stripe block size?
> 

J.

The stripe size really is dependent on the usage.

For streaming content, large stripes result in fewer head seeks which
take a relatively large amount of time and can impact throughput.

For use with data base type access, a stripe size equal to the record
size would be best.

For what you describe, I would use a stripe size that is no more than
1-2 X the allocation block size.

An example of a bad stripe size:

	Stripe Size = 64K
	Allocation Size = 48k

	Each Stripe read will read 2 or more allocation blocks and have
	to extract the correct data.  This gets real messy when
	allocation blocks require more than a single read.  Writes
	are even worse because now you need to do a read-modify-write
	for each block access unless the data is in a cached block.
	Even then, the fs still has to buffer move the data into the
	cached block before writing the data.

The same is also true where the Strip is smaller than the allocation
blocks.

What I would do is create the stripe using the smallest stripe allowed
by whatever tool you use.

Create a directory or two and save a small (2-3 text bytes with gedit or
vi will do) file.

Do an ls -al on the volume and look at what the size of the directories
and the text file are.  This will be a good indication of the allocation
size.  Now, reformat the RAID with that as your smallest stripe size. 
You can make the stripes larger if you want, but always make them an
integral multiple of the allocation size.

Good luck.

Matt


----------------------------------------
Matt Gulick
Sr. Staff Engineer
Adaptec, Inc.
gulickconsulting@direcway.com
matt_gulick@adaptec.com
(715) 426-0884


-
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux