Podczas obliczania IOPS dla tradycyjnych macierzy RAID można zastosować następującą formułę (Zapożyczono z Getting The Hang Of IOPS v1.3 na Symantec Connect):
Ieffective = (n * Isingle) / (READ% + (F * WRITE%))
Gdzie:
- Ieffective to efektywna liczba IOPS
- Isingle to średni IOPS dla pojedynczego dysku .
- n jest liczbą dysków w tablicy
- READ% to część odczytów pobranych z profilowania dysku
- WRITE% to część zapisów pobranych z profilowania dysku
F jest karą za zapis RAID :
RAID Level Write Penalty RAID-0 1 RAID-1 2 RAID-5 4 RAID-6 6 RAID-10 2 RAID-DP 2
Formuła jest zasadniczo funkcją:
- IOPS dla każdego dysku w macierzy
- Liczba dysków. Więcej dysków oznacza więcej IOPS
- Kara RAID za każdą operację zapisu.
- RAID5 i RAID6 wymagają ponad 4 operacji na dysku dla każdego zapisu. Kontroler musi odczytać blok, a następnie odczytać dane parzystości (dwie operacje), obliczając nowe dane parzystości, a następnie zaktualizować blok parzystości i zaktualizować blok danych (Dwie kolejne operacje). RAID6 ma dwa bloki parzystości i dlatego wymaga trzech odczytów i trzech zapisów. Macierze RAID5 i RAID6 są zatem zdolne do mniejszej liczby operacji IOPS niż RAID1.
- RAID1 i RAID10 wymagają tylko 2 zapisów, po jednym na każdy dysk w lustrze.
Dla jasności wszystko to zapewnia oszacowanie wydajności teoretycznej. Różne kontrolery i metody RAID mają na celu przyspieszenie niektórych z nich.
Odpowiednikiem RAID5 i RAID6 w ZFS jest RAIDZ i RAIDZ2. Podczas obliczania IOPS dla macierzy RAIDZ, czy mogę użyć tej samej formuły, której używam dla RAID5 i RAID6, czy też ZFS ma specjalne sztuczki w celu zmniejszenia liczby operacji wymaganych do operacji zapisu.
Czy istnieje inna formuła do obliczania IOPS dla macierzy RAIDZ?