DaveWentzel.com            All Things Data

Disk Metrics

 

 
I find this table to be helpful.
 
These numbers are assume a SINGLE DRIVE.
 
Drive Type
Drive Speed
Sustained Sequential
Transfer Rate -
Outer Tracks
Sustained Sequential
Transfer Rate -
Inner Tracks
Full Rotation Time
Avg Rotational
Latency
Avg Seek Time
Reads
Avg Seek Time
Writes
Avg IOPs
SCSI
10,000
80 Mb/sec
40 Mb/sec
6ms
3ms
4.6ms
5.2ms
100
SCSI 15,000 125 Mb/sec 70 Mb/sec   2ms 3.4ms   180
IDE Desktop Drive   30 Mb/sec 15 Mb/sec         150
SATA               150
Solid State   1600 Mb/sec 1600 Mb/sec         400K
 
 
Random IO performance is constrained by the rotational speed and the seek time.  This also assumes a queue depth of 1.  A higher queue depth will give better performance, up to a point.  
 
Why do I mention these numbers?  You have to make sure that the disk subsystem can handle the I/O load that your database generates.  Avg IOPs column above will help you determine how many disks you need.  This of course assumes you know the I/O load of your database/app. 
 
Assuming you have RAID 10 and 6 SCSI 15,000 disks, assume you have 1/2 the available IOPs working for you.  So (150*6 disks/2) = 450 IOPs.  For RAID 5 take the total IOPs for all available disks and divide by 4 (there is a lot of overhead with RAID 5).  We assume reads here, you will see less for writes because they are a more expensive operation. 
 
How Many Disks Do I Need?
 
When trying to determine number of disks needed for an environment it is common to use 125 IOPs/disk for random I/O.  This is a nice round number that will allow some wiggle room for peak load. 
 
Required Disks = (Reads/Sec + (Writes/Sec*RAIDAdjuster))/DiskIOPs
 
The RAIDAdjuster takes the RAID 5 Write Penalty into consideration. 
 
RAID Level
RAIDAdjuster
Notes
0
1
has no RAID write overhead
1
2
requires an extra write for the mirror
10
2
requires an extra write for the mirror
5
4
 
Interface performance (Bus Bandwidth) also plays a key role.
 

Add new comment