47 lines
1.7 KiB
Markdown
47 lines
1.7 KiB
Markdown
# 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
|
|
|
|
- <http://git.kernel.dk/?p=fio.git;a=summary>
|