# RAID Penalties ## Contents - [Write Penalty](#write-penalty) - [Penalty Calculation](#penalty-calculation) - [References](#references) ## Write Penalty The penalty is for how we deal with the stripe (parity, etc.) where 1 means no penalty. | **RAID Level** | **Write Penalty** | | -------------- | ----------------- | | 0 | 1 | | 1 | 2 | | 5 | 4 | | 10 | 2 | ## Penalty Calculation - **raw IOPS** = disk speed IOPS \* number of disks - **functional IOPS** = (raw IOPS \* write% / write penalty) + (raw IOPS \* read%) Given 5x 15k SAS drives @ 900 IOPS (180/disk) as an average, a sample calculation for RAID-5, with varying levels of write vs read percentage: ``` 16% writes: (900*.16/4)+(900*.84) = 792 / 900 = 88.0% efficiency 10% writes: (900*.10/4)+(900*.90) = 832 / 900 = 92.4% efficiency 5% writes: (900*.05/4)+(900*.95) = 866 / 900 = 96.2% efficiency ``` Reducing the write percentage from 16% to 10% would yield an efficiency gain of 4.4%, from 16% to 5% yields an 8.2% gain. Writing to RAID5 and calculating parity is very costly - we haven't even talked about linear writes vs. scattered block writes. As an exercise, if the same 5-disk RAID-5 was converted to an 8 disk RAID-10 (to achieve the same capacity for data): ``` 8*180 = 1440 raw IOPs (1440*.16/2)+(1440*.84) = 1324 / 792 = 167% efficiency ``` This is all very basic math that doesn't take into account real world load and deals with theoretical maximums based on published standards. Use a tool such as `fio` to obtain real world performance. ## References -