Usenet.com

www.Usenet.com

Group Index

Comp Thread Archive from Usenet.com

<-- __Chronological__ --> <-- __Thread__ -->

Re: Newbie storage questions... (RAID5, SANs, SCSI)



> As already noted, most RAID implementations do not work this way:
instead,
> data is spread across the disks in the array in coarser chunks - usually
no
> smaller than 4 KB per disk, often 64 KB per disk, and there are good
reasons
> in most workloads to make them even larger.  Some early implementations of
> RAID-3 distributed the data at finer grain (much as you describe above),
but
> I've never heard of RAID-0, -1, -4, or -5 doing so.

Bill / Nik / Robert,

    Thanks, guys. This is really great information.

    I need to keep an eye on the total number of IOs/second that my SQL
Server is generating. I've learned from this thread that if I have a
reasonably small number of disks in my RAID, I can estimate my maximum
number of IOPs by multiplying the IOPs rating of an individual disk by the
number of disks in the array. I've also learned from our discussion of
"stripe size" that if SQL Server decides to read some data whose size is
LESS THAN the stripe size, it very well may read this data from a single
disk as opposed to reading all of the disks in parallel. Fair enough... but
let's say SQL Server needs to read 65k of data [perhaps it's doing a table
scan], and let's say the stripe size is 64k, and let's say I have a RAID0
array (just to keep the example simple) with 10 disks. What happens in this
scenario? Here's what I'm thinking:

    - SQL Server sends a single IO request to the HBA. Windows registers
this in its Performance Monitor as one IO request.
    - The HBA realizes that the first 64k of data that it needs to read is
on Disk#0 and the final 1k is on Disk#1. It generates two IO requests, one
for each disk and submits them in parallel.

    So the bottom line is: Each IO request of 64k or less will generate 1
IO. Each read-request that is asking for *more* than 64k will very likely
generate MORE than one IO request since more than one disk needs to be
touched. So when trying to estimate the number of IOs/sec that my
application will require, I need to consider the number of reads/writes that
will exceed the stripe size since these operations, which Windows perceives
as single IOs, are in reality generating multiple IOs. Is this correct?

David






<-- __Chronological__ --> <-- __Thread__ -->


Usenet.com



Please check out one of the premium Usenet Newsgroup Service Providers below for access to Usenet.