Ao calcular o IOPS para matrizes RAID tradicionais, pode-se usar a seguinte fórmula (emprestada de Getting The Hang Of IOPS v1.3 no Symantec Connect):
Ieffective = (n * Isingle) / (READ% + (F * WRITE%))
Onde:
- Ineficaz é o número efetivo de IOPS
- Isingle é o IOPS médio de uma única unidade .
- n é o número de discos na matriz
- READ% é a fração de leituras obtidas do perfil do disco
- WRITE% é a fração de gravações obtidas da criação de perfil de disco
F é a penalidade de gravação RAID :
RAID Level Write Penalty RAID-0 1 RAID-1 2 RAID-5 4 RAID-6 6 RAID-10 2 RAID-DP 2
A fórmula é essencialmente uma função de:
- IOPS para cada unidade individual na matriz
- O número de discos. Mais discos significa mais IOPS
- A penalidade de RAID para cada operação de gravação.
- RAID5 e RAID6 requerem mais de 4 operações de disco para cada gravação. O controlador deve ler o bloco e, em seguida, ler os dados de paridade (duas operações), calcular os novos dados de paridade e atualizar o bloco de paridade e atualizar o bloco de dados (mais duas operações). O RAID6 possui dois blocos de paridade e, portanto, requer três leituras e três gravações. As matrizes RAID5 e RAID6 são, portanto, capazes de menos IOPS que o RAID1.
- RAID1 e RAID10 requerem apenas 2 gravações, uma em cada disco no espelho.
E para ser claro, tudo isso fornece uma estimativa do desempenho teórico. Vários controladores e métodos RAID têm truques para acelerar parte disso.
O equivalente do ZFS de RAID5 e RAID6 é RAIDZ e RAIDZ2. Ao calcular o IOPS para matrizes RAIDZ, posso usar a mesma fórmula usada para RAID5 e RAID6 ou o ZFS possui truques especiais para reduzir o número de operações necessárias para operações de gravação.
Existe uma fórmula diferente para usar no cálculo de IOPS para matrizes RAIDZ?