Wpływ poziomów RAID na IOPS [zamknięte]

11

Jeśli chodzi o IOPS, widziałem kilka źródeł w Internecie, które sugerują, że IOPS danej liczby dysków jest po prostu IOPS pojedynczego dysku pomnożonego przez liczbę dysków.

Jeśli moje rozumienie IOPS jest poprawne (i wcale nie jestem pewien, że tak jest), pomyślałem, że rzeczywistość zależeć będzie - między wieloma innymi czynnikami - od poziomu RAID. W przypadku macierzy RAID 1/10 wszystkie dane są duplikowane na co najmniej dwóch dyskach, co zmniejsza rywalizację na danym dysku w przypadku niektórych wzorców We / Wy. Jednak w rozłożonych poziomach RAID, takich jak RAID 0/5/6, dane są dystrybuowane, a nie duplikowane, co oznacza, że ​​kolejne żądania odczytu mogą dotyczyć tego samego wrzeciona, co prowadzi do blokowania podczas wykonywania poprzednich operacji we / wy. Zapisy są jeszcze bardziej sprzeczne.

Powinienem dodać, że doceniam fakt, że rzeczywistość jest znacznie bardziej złożona z powodu różnych optymalizacji i innych czynników. Moje pytanie naprawdę dotyczy tylko tego, czy na bardzo podstawowym poziomie moje rozumienie tego, co oznacza IOPS, jest na dobrej drodze. Może być tak, że moje twierdzenie, że poziomy RAID mogą wpływać na IOPS nawet w taki sposób, wskazują na podstawowe niezrozumienie tej koncepcji.

dbr
źródło
4
Upraszczasz to do tego stopnia, że ​​wykluczasz wpływ pamięci podręcznej kontrolera RAID, systemu operacyjnego, zachowania aplikacji, synchronicznych lub asynchronicznych operacji we / wy i typu dysku. Więc czego szukasz?
ewwhite
@ewwhite Przepraszam, powinienem był być jaśniejszy. Naprawdę mam nadzieję, że sprawdzę, czy podstawowa zasada mojego myślenia jest poprawna, zamiast dokonywać rzeczywistych prognoz. Doceniam fakt, że w rzeczywistości na rzeczy duży wpływ mają różnego rodzaju optymalizacje i inne złożoności. W tle jest sytuacja w świecie rzeczywistym, ale jak to często bywa, gdy patrzysz na coś, czego nie znasz, postanowiłem odejść i uczyć się w tle, więc czuję się trochę bardziej wygodne z podstawowymi zasadami.
dbr
Kusiło mnie, aby zapytać, czy ktoś ma jakieś zalecenia dotyczące dobrej jakości czytania dotyczące teorii i koncepcji dotyczących pamięci masowej i jej wydajności, ale nie zrobiłem tego, ponieważ myślałem, że może to być niewłaściwe pytanie dla ServerFault. Wydaje się, że jak dotąd w Internecie jest dość mało wysokiej jakości pisania na ten temat - być może dlatego, że jest to dość skomplikowany temat, który niewielu naprawdę w pełni rozumie.
dbr
Wydajność RAID zależy znacznie bardziej od sprzętu kontrolera i ograniczeń implementacyjnych niż poziom RAID. Np. RAID0, RAID1, RAID5 i RAID6 teoretycznie mogą wykorzystywać wszystkie dyski do długich odczytów, dzięki czemu mogą mieć taką samą prędkość odczytu na idealnym kontrolerze.
Zac67

Odpowiedzi:

12

W przypadku HDD IOPS są na ogół zdominowane przez czas dostępu do dysku, który jest sumą opóźnienia wyszukiwania + opóźnienia obrotowego + opóźnienia transferu. Ponieważ zmienne te silnie zależą od wzorców dostępu i mają nieoczywiste interakcje z konkretnym układem RAID (tj. Rozmiar paska) i kontrolerem (tj: strojenie odczytu z wyprzedzeniem), każda prosta odpowiedź BĘDZIE NIEPRAWIDŁOWA.

Spróbujmy jednak mieć figurę do gry w piłkę. Przy pierwszym przybliżeniu IOPS gwarantowany przez macierz n-dyskową powinien być n-krotnością IOPS pojedynczego dysku. Jednak zarówno poziom RAID, jak i wzorzec dostępu do danych , poprzez zmianę ciężaru między opóźnieniem wyszukiwania / rotacji / transferu, dramatycznie zmienia to przybliżenie pierwszego rzędu.

Zróbmy kilka przykładów, zakładając 100 IOPS na pojedyncze dyski (typowa wartość dla dysków 7200 RPM) i tablice 4-dyskowe (z wyjątkiem RAID1, często ograniczone tylko do 2-kierunkowego):

  • pojedynczy dysk ma 100 IOPS, zarówno do odczytu, jak i zapisu (uwaga: z powodu koalescencji zapisu, IOPS zapisu są na ogół wyższe niż IOPS odczytu, ale dla uproszczenia zignorujmy to)
  • RAID0 (4-kierunkowe paski) ma do 4x losowych IOPS i do 4x sekwencyjnych IOPS. Kluczowym słowem jest tutaj „do”: ze względu na charakter rozkładania i wyrównywania danych, jeśli sektory o dostępie losowym przeważnie znajdują się na jednym dysku, zakończy się to znacznie niższym IOPS.
  • RAID1 (dublowanie dwukierunkowe) jest bardziej skomplikowany w profilowaniu. Ponieważ różne dyski mogą wyszukiwać na różnych danych, ma do 2x losowy odczyt IOPS, ale ten sam 1x (lub nieco niższy, z powodu narzutu) losowy zapis IOPS. Jeśli wszystko dobrze się wyrówna (np. Duże, ale nie w 100% sekwencyjne odczyty, kontroler RAID wykorzystujący koncepcję / obsługę fragmentów / pasków nawet w trybie dublowania, poprawne działanie odczytu z wyprzedzeniem itp.) Sekwencyjne odczyty mogą czasami być nawet dwukrotnie większe wartość dysku, podczas gdy sekwencyjne zapisy pozostają ograniczone do 1x pojedynczego dysku (tj .: brak przyspieszenia)
  • RAID10 (4-way mirroring) pod względem wydajności znajduje się w połowie drogi między 4-way RAID0 a 2-way mirroring. Ma do 4x losowego odczytu IOPS i do 2x losowego zapisu IOPS. W przypadku transferów sekwencyjnych obowiązuje zastrzeżenie RAID1: czasami ma do 4x IOPS odczytu sekwencyjnego, ale tylko 2x IOPS zapisu sekwencyjnego. Należy pamiętać, że niektóre implementacje RAID10 (a mianowicie Linux MDRAID) zapewniają różne układy macierzy RAID10 o innym profilu wydajności .
  • RAID5 (parzystość w paski) ma do 4x losowy odczyt IOPS, podczas gdy losowy zapis IOPS, w zależności od wielu czynników, takich jak wielkość zapisu w odniesieniu do rozmiaru paska, dostępność dużej pamięci podręcznej paska, algorytm rekonstrukcji paska sam (odczyt-rekonstrukcja-zapis vs. odczyt-modyfikacja-zapis) itp. może znajdować się gdziekolwiek między 0,5x (lub mniej) a 2x IOPS pojedynczego dysku. Obciążenia sekwencyjne są bardziej przewidywalne, z 3-krotnością IOPS pojedynczego dysku (zarówno do odczytu, jak i zapisu)
  • RAID6 (podwójna parzystość w paski) zachowuje się bardzo podobnie do swojego brata RAID5, ale z mniejszą wydajnością zapisu. Ma nawet 4x losowy odczyt IOPS pojedynczego dysku, ale jego wydajność zapisu losowego jest nawet niższa niż RAID5, przy tych samych wartościach bezwzględnych (0,5x - 2x), ale z niższą średnią rzeczywistych słów. Sekwencyjne odczyty i zapisy są ograniczone do 2X IOPS pojedynczego dysku.

Powtórzę: powyższe są prostymi i prawie zepsutymi przybliżeniami. W każdym razie, jeśli chcesz grać z (poważnie niekompletnym) kalkulatorem RAID IOPS, spójrz tutaj .

Teraz wróć do prawdziwego świata. W rzeczywistych obciążeniach RAID10 jest często szybszym i preferowanym wyborem , zachowując wysoką wydajność nawet w obliczu zdegradowanej macierzy . RAID5 i RAID6 nie powinny być używane w przypadku obciążeń wrażliwych na wydajność, chyba że mają charakter koncentrujący się na odczycie lub sekwencyjny. Warto zauważyć, że poważne kontrolery RAID mają dużą pamięć podręczną zapisu chronionego przed utratą zasilania, głównie w celu przezwyciężenia (przez buforowanie z dużą ilością pasków) niskiej wydajności losowego zapisu RAID5 / 6. Nigdy nie używaj RAID5 / 6 z kontrolerami RAID bez pamięci podręcznej , chyba że naprawdę nie zależy ci na szybkości macierzy.

SSD to różne bestie, pomyślał. Ponieważ mają one technicznie znacznie niższy średni czas dostępu, macierze RAID oparte na parzystości wiążą się ze znacznie niższym kosztem wydajności i są znacznie bardziej opłacalną opcją niż na dyskach twardych. Jednak przy niewielkim obciążeniu centralnym losowego zapisu i tak użyłbym konfiguracji RAID10.

Shodanshok
źródło
Nigdy nie używaj RAID5 / 6 z kontrolerami RAID bez pamięci podręcznej, chyba że naprawdę nie zależy ci na szybkości macierzy. Możesz tego uniknąć, jeśli naprawdę wiesz, co robisz i masz ścisłą kontrolę nad swoim wzorcem we / wy. Jeśli robisz tylko sekwencyjne operacje we / wy, które są dopasowane do rozmiaru paska tablicy, możesz uniknąć używania RAID5 / 6 bez pamięci podręcznej. Pamięć podręczna nie może zaoszczędzić wydajności, jeśli wykonasz wystarczającą liczbę losowych, małych bloków operacji zapisu w macierzy RAID5 / 6, chociaż wartość „wystarczającej liczby operacji IO”, która zabija wydajność, może być ogromną liczbą dla naprawdę dobrego kontrolera RAID.
Andrew Henle,
@AndrewHenle Pewnie, jeśli tylko sekwencyjne odczyty / zapisy, które są wyrównane do pasków, nawet kontroler bez pamięci podręcznej w trybie RAD5 / 6 może dać dobre wyniki. Jest to jednak bardzo wąski wzorzec użytkowania (tj. Przesyłanie strumieniowe i kopie zapasowe). W przypadku obciążenia ogólnego przeznaczenia kontroler bez pamięci podręcznej w połączeniu z dowolną macierzą RAID parzystości będzie działał bardzo wolno. Niektóre kontrolery wymagają nawet chronionej przed utratą zasilania pamięci podręcznej zapisu zwrotnego, aby umożliwić utworzenie parzystości RAID.
shodanshok
Myślałem raczej o adminów, którzy zastanawiają się, dlaczego ich przechowywanie poczty korporacyjnej 21-drive tablica RAID6 z 19-MB-bo-większe-must-be-szybciej paskiem rozmiar jest powolny ....
Andrew Henle
1

To tylko kwestia definicji. Możesz mierzyć IOPS na różnych poziomach w systemie, a otrzymasz różne wartości. Załóżmy na przykład, że masz dwa dyski dublowane i piszesz tak szybko, jak to możliwe. IOPS przechodzący na dyski będzie dwa razy większy niż IOPS obsługiwany przez pojedynczy dysk przy podobnym obciążeniu zapisu. Ale IOPS wchodzący do kontrolera będzie równy liczbie IOPS obsługiwanych przez pojedynczy dysk.

Zwykle zależy nam na tym, ile logicznych IOPS możemy dostać się do tablicy i nie obchodzi nas szczególnie, co dzieje się na poziomie dysku. W takim przypadku masz rację, a IOPS zależy od poziomu macierzy RAID, liczby dysków, wydajności poszczególnych dysków oraz, w niektórych przypadkach, specyficznych cech operacji.

David Schwartz
źródło