Thread (4 messages) 4 messages, 2 authors, 2004-04-05

Re: Stripe Block Size.

From: Matt Gulick <hidden>
Date: 2004-04-05 18:05:59

On Mon, 2004-04-05 at 11:58, Jason C. Leach wrote:
Matt Gulick wrote:
quoted
On Mon, 2004-04-05 at 10:51, Jason C. Leach wrote:
 
quoted
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

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help