Quando si calcola IOPS per array RAID tradizionali, è possibile utilizzare la seguente formula (preso in prestito da Ottenere The Hang Of IOPS v1.3 su Symantec Connect):
Ieffective = (n * Isingle) / (READ% + (F * WRITE%))
Dove:
- Ieffective è il numero effettivo di IOPS
- Isingle è lo IOPS medio di una singola unità .
- n è il numero di dischi nell'array
- READ% è la frazione di letture prese dalla profilazione del disco
- WRITE% è la frazione di scritture prese dalla profilazione del disco
F è la penalità di scrittura RAID :
RAID Level Write Penalty RAID-0 1 RAID-1 2 RAID-5 4 RAID-6 6 RAID-10 2 RAID-DP 2
La formula è essenzialmente una funzione di:
- IOPS per ogni singola unità dell'array
- Il numero di dischi. Più dischi significa più IOPS
- La penalità RAID per ogni operazione di scrittura.
- RAID5 e RAID6 richiedono 4+ operazioni su disco per ogni scrittura. Il controller deve leggere il blocco e quindi leggere i dati di parità (due operazioni), calcolando i nuovi dati di parità, quindi aggiornare il blocco di parità e aggiornare il blocco di dati (Altre due operazioni). RAID6 ha due blocchi di parità e quindi richiede tre letture e tre scritture. Gli array RAID5 e RAID6 sono quindi in grado di contenere meno IOPS rispetto a RAID1.
- RAID1 e RAID10 richiedono solo 2 scritture, una per ciascun disco nel mirror.
E per essere chiari, tutto ciò fornisce una stima delle prestazioni teoriche. Vari controller e metodi RAID hanno dei trucchi per accelerare questo.
L'equivalente di ZFS di RAID5 e RAID6 è RAIDZ e RAIDZ2. Nel calcolare IOPS per array RAIDZ, posso usare la stessa formula che uso per RAID5 e RAID6 o ZFS ha trucchi speciali per ridurre il numero di operazioni richieste per le operazioni di scrittura.
Esiste una formula diversa da utilizzare per il calcolo degli IOPS per array RAIDZ?