xfs
[Top] [All Lists]

Re: optimizing raid performance with xfs

To: Steve Lord <lord@xxxxxxx>
Subject: Re: optimizing raid performance with xfs
From: Mark Mayo <mark@xxxxxxxxxx>
Date: Thu, 20 Mar 2003 05:04:44 +0000
Cc: linux-xfs@xxxxxxxxxxx
In-reply-to: <1048106365.19339.32.camel@xxxxxxxxxxxxxxxxxxxx>
References: <Pine.LNX.4.44.0303191521360.2065-100000@xxxxxxxxxxxxxxxxxx> <1048106365.19339.32.camel@xxxxxxxxxxxxxxxxxxxx>
Sender: linux-xfs-bounce@xxxxxxxxxxx
User-agent: Mutt/1.4i
On Wed, Mar 19, 2003 at 02:39:26PM -0600, Steve Lord wrote:
> 
> Also, pay attention to the mkfs output, the sunit and swidth lines,
> these control how data will get layed out. You want to make sure they
> line up with your device configuration. This may or may not happen
> automatically depending on your setup. Read the mkfs.xfs man page for
> how to control them yourself.

Ah. I'm just trying XFS for the first time and also have some tuning
questions!

Is the general recommendation to set sunit/su and swidth/sw when running
on a hardware RAID system? In my case, I have a bunch of volumes created
on an IBM FAStT700 SAN (rebranded LSI 4884, like the SGI SAN Server
1000).  The RAID controller lets me adjust "segment size" from 8-256K,
with a default of 64KB on a RAID5 volume. The docs say "A segment is the
amount of data, in kilobytes, that the controller writes on a single
drive in a logical drive before writing data on the next drive." Am I
correct when I interpret this as the "strip unit size" defined in the
mkfs.xfs man page?

Assuming I'm on the right track then, since I have 512 byte data
blocks, the 64KB stripe takes up 128 blocks. I have 12 drives in the
stripe, so to create a XFS FS I'd run:

   mkfs.xfs -d sunit=128,swidth=1536
or
   mkfs.xfs -d su=64k,sw=768k

When I create a FS like this, I get:

# mkfs.xfs -f -i size=512 -d sunit=128,swidth=1536 /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=188, agsize=1048576 blks
data     =                       bsize=4096   blocks=197025168, imaxpct=25
         =                       sunit=16     swidth=192 blks, unwritten=0
naming   =version 2              bsize=4096  
log      =internal log           bsize=4096   blocks=24064, version=1
         =                       sunit=16 blks
realtime =none                   extsz=65536  blocks=0, rtextents=0

Am I going about this the right way, or have I gone wrong somewhere along
the way in my logic?  :)

On a related note, I'm wondering what happens when I grow volumes. In this
particular volume, it's 752GB right now but what if I add 2 more drives
to the volume to grow it by another 120GB? Can I respecify the swidth value
somehow or should I simply not specify sunit/swidth on volumes I know will
be growing and leave them at the default 0 values?

Finally, anything I should be looking out for on 1.7TB volumes?

Regards,
-Mark

> 
> Steve
> 
> -- 
> 
> Steve Lord                                      voice: +1-651-683-3511
> Principal Engineer, Filesystem Software         email: lord@xxxxxxx
> 

-- 
 Mark Mayo        <mark@xxxxxxxxxx>       http://www.vmunix.com/~mark
 PGP Fingerprint: 32BA C076 D78C 109B 2558  25E5 0CCE C6C1 262E 28AF            
    
 Commitment, n.:  Commitment can be illustrated by a breakfast of  
 ham and eggs.    The chicken was involved, the pig was committed.              
         


<Prev in Thread] Current Thread [Next in Thread>