Storage disk iops and capacity design
Most of the storage engineers experienced with performance and latency issues, This starts from the infrastructure design and deployment phase which was not planned in-order to satisfy the future load.
Here I have described the disk's types and it iops capacity which may help in better understanding for the future new deployments.
Commonly used disk types in storage's:
DiskType
|
Expansion
|
SATA
|
Serial Advanced Technology Attachment, often abbreviated SATA or S-ATA
|
FC
|
Fiber Channel disks
|
SAS
|
Serial Attached SCSI
|
SSD
|
Solid-state disks
|
IOPS:
Input output per seconds, IOPS are used to define the performance of a given disk or disk array.
RPM
|
Max
Iop’s
|
5.4K RPM
|
50-80
|
7.2K RPM
|
75-100
|
10K RPM
|
125-150
|
15K RPM
|
175-210
|
Two features which involves in iops calculation
- Average latency
- Average seek time
Two types of IOPS operations
- Read operations
- Write operations
Equation: Disk IOPS calculation
Let’s take Cheetah
ST3300655SS 15K SAS hard disk which can be rated as follows:
- Average latency (avgLatency): 2.0 ms or .002 seconds
- Average seek time (avgSeek): 3.5 ms or .0035 seconds
diskMaxIops = 1/(avgLatency + avgSeek)
diskMaxIops = 1/(.002 + .0035)
diskMaxIops = 181
diskMaxIops = 1/(.002 + .0035)
diskMaxIops = 181
Total maximum IOPS
for 15k disk is 181. ((avgLatency) and (avgLatency) will be
provided by disk vendor)
http://www.seagate.com/staticfiles/support/disc/manuals/enterprise/cheetah/15K.5/SAS/100384784c.pdf
maxReadIops = numDisks * diskMaxIops
For an array of 5 15K RPM disks, the maximum read IOPS (maxReadIops) would be calculated as follows:
maxReadIops = 10 * 181
maxReadIops = 1810 (which is also mean to be RawIops)
http://www.seagate.com/staticfiles/support/disc/manuals/enterprise/cheetah/15K.5/SAS/100384784c.pdf
Maximum Read IOPS
Calculating maximum read IOPS (maxReadIops) for a RAID array is simple: multiply the number of disks (numDisks) in the array by the maximum IOPS per disk (diskMaxIops):maxReadIops = numDisks * diskMaxIops
For an array of 5 15K RPM disks, the maximum read IOPS (maxReadIops) would be calculated as follows:
maxReadIops = 10 * 181
maxReadIops = 1810 (which is also mean to be RawIops)
Total maximum read IOPS for the above array is 1810.
Maximum Write IOPS
Calculating maximum write IOPS (maxWriteIops) is a slightly different matter, with respect to RAID arrays. RAID arrays suffer a write penalty or overhead; the type of RAID array determines the severity of the write penalty. This penalty is a result of the redundancy that RAID provides. The array necessarily has to write the data to multiple disks/locations to ensure data integrity.RAID Write Penalty
Each RAID type suffers a different write penalty. The most common RAID types and their write penalties are defined in the following table:
RAID Type
|
Write Penalty
|
RAID 1
|
2
|
RAID 5
|
4
|
RAID 10
|
2
|
Herecome the equation to calculate the maximum write IOPS where the disks array with RAID-5.
maxWriteIops = maxReadIops / raidWritePenalty
maxWriteIops = 1810 / 4
maxWriteIops = 452
Total maximum write IOPS is 452.
Example, lets take an example of 10 15k RPM disk which has 181-iops with RAID-5
FuncIops = (RawIops*maxRead%)/Raid penalty + (RawIops*maxWrite%)
Where workload is about 80% Write and 20% Read
FuncIops = (1810*0.8)/4 + (1810*0.2)
FuncIops = 724 - the storage can handle per second
To start with proper deployment, one must have known performance requirements (i.e. read and write IOPS) for a given system or application. This information can be obtained from vendor.
Calculating the Minimum Required IOPS
Let's assume we have an application that requires the following:
To calculate the minimum number of IOPS (minReqdIops), add the number of required read IOPS (reqdReadIops) to the product of the number of required write IOPS (reqdWriteIops) and the RAID type's write penalty (raidWritePenalty):
minReqdIops = reqdReadIops + (reqdWriteIops * raidWritePenalty)
minReqdIops = 400 + (200 * 4)
minReqdIops = 1200
The minimum number of IOPS required to provide the level of performance for our example application is 1200. This means the disk array should NOT build with less than the required capacity.
Minimum Number of Disks by Disk Speed
The minimum number of disks needed to meet our performance requirement (minNumDiskMinPerf) is calculated as follows:
minNumDisksMinPerf = minReqdIops / maxIopsByDiskSpeed
Using the information from calculating the minimum required IOPS above, and assuming we want to create an array of 10K RPM disks (130 IOPS per disk), the calculation for the minimum number of disks that will meet our minimum performance requirement (minNumDisksMinPerf) of 1200 IOPS (minReqdIops) is as follows:
minNumDisksMinPerf = 1200 / 130
minNumDisksMinPerf = 10
The minimum number of 10K RPM disks required is 10.
Optionally, if we want to create an array of 15K RPM disks (181 IOPS per disk), the minimum number of disks needed to meet our performance requirement would be calculated as follows:
minNumDisksMinPerf = 1200 / 181
minNumDisksMinPerf = 7
The minimum number of 15K RPM disks needed to be configured on storage to handle the performance requirement is minimum 7 disks.
The RAID type determines the minimum number of disks to satisfy the RAID type's requirements. For example, RAID 5 always requires at least 3 disks, at a minimum; RAID 10 always requires at least 4 disks, at a minimum.
After calculating the number of disks required by disk speed, determine the minimum number of disks required by RAID type.
In the example where 15K RPM disks were selected to build an array, the calculation shows at least 7 drives are required. If the RAID type will be 5, 10 disks will suffice. So if RAID-5 it requires an additional disk for raid (i.e: 7+1=8 disks + spare disks).
Functional IOPS
Apart from Read and Write calculation we do have to calcluate functional IOPS which combines both read and write operation in a second during the production.Example, lets take an example of 10 15k RPM disk which has 181-iops with RAID-5
FuncIops = (RawIops*maxRead%)/Raid penalty + (RawIops*maxWrite%)
Where workload is about 80% Write and 20% Read
FuncIops = (1810*0.8)/4 + (1810*0.2)
FuncIops = 724 - the storage can handle per second
Designing for Performance
Calculating the maximum read and write IOPS for an existing or future RAID array is not only the key. To ensure consistent and sustained performance the systems architect needs to profile the performance requirements for a system to determine the best disk solution. The minimum required IOPS by application must be determined so that the proper number, and speed, of disks can be purchased accordingly.To start with proper deployment, one must have known performance requirements (i.e. read and write IOPS) for a given system or application. This information can be obtained from vendor.
Calculating the Minimum Required IOPS
Let's assume we have an application that requires the following:
- 400 Read IOPS
- 200 Write IOPS
To calculate the minimum number of IOPS (minReqdIops), add the number of required read IOPS (reqdReadIops) to the product of the number of required write IOPS (reqdWriteIops) and the RAID type's write penalty (raidWritePenalty):
minReqdIops = reqdReadIops + (reqdWriteIops * raidWritePenalty)
minReqdIops = 400 + (200 * 4)
minReqdIops = 1200
The minimum number of IOPS required to provide the level of performance for our example application is 1200. This means the disk array should NOT build with less than the required capacity.
Calculate the Minimum Number of Disks
Once the minimum number of required IOPS is determined, it's very easy to determine the minimum number and speed of disks required to create a RAID array to meet performance requirements.Minimum Number of Disks by Disk Speed
The minimum number of disks needed to meet our performance requirement (minNumDiskMinPerf) is calculated as follows:
minNumDisksMinPerf = minReqdIops / maxIopsByDiskSpeed
Using the information from calculating the minimum required IOPS above, and assuming we want to create an array of 10K RPM disks (130 IOPS per disk), the calculation for the minimum number of disks that will meet our minimum performance requirement (minNumDisksMinPerf) of 1200 IOPS (minReqdIops) is as follows:
minNumDisksMinPerf = 1200 / 130
minNumDisksMinPerf = 10
The minimum number of 10K RPM disks required is 10.
Optionally, if we want to create an array of 15K RPM disks (181 IOPS per disk), the minimum number of disks needed to meet our performance requirement would be calculated as follows:
minNumDisksMinPerf = 1200 / 181
minNumDisksMinPerf = 7
The minimum number of 15K RPM disks needed to be configured on storage to handle the performance requirement is minimum 7 disks.
Minimum Number of Disks by RAID Type
The RAID type determines the minimum number of disks to satisfy the RAID type's requirements. For example, RAID 5 always requires at least 3 disks, at a minimum; RAID 10 always requires at least 4 disks, at a minimum.After calculating the number of disks required by disk speed, determine the minimum number of disks required by RAID type.
In the example where 15K RPM disks were selected to build an array, the calculation shows at least 7 drives are required. If the RAID type will be 5, 10 disks will suffice. So if RAID-5 it requires an additional disk for raid (i.e: 7+1=8 disks + spare disks).
Comments
Post a Comment