Dlaczego IOPS ma znaczenie?

32

Rozumiem, czym są IOPS i przepustowość. Przepustowość mierzy przepływ danych w MB / si IOPS mówi, ile operacji we / wy dzieje się na sekundę.

Nie rozumiem, dlaczego wiele usług pamięci masowej pokazuje tylko IOPS, które zapewniają. Naprawdę nie widzę żadnego scenariusza, w którym wolałbym poznać IOPS zamiast przepustowości.

Dlaczego IOPS ma znaczenie? Dlaczego AWS pokazuje głównie swoje zasady przechowywania w IOPS? Gdzie IOPS jest ważniejszy niż przepustowość (MB / s)?


EDYTOWAĆ:

Niektóre osoby zastanawiają się nad tym pytaniem, jak gdybym zapytał, czym jest dostęp losowy i jak wpływa on na wydajność lub jak działa HDD i SSD ... chociaż myślę, że ta informacja jest przydatna dla osób, które nie znają się na pamięci masowej, dużo uwagi poświęcamy do tego i to nie jest celem pytania, pytanie dotyczy „Jakie nowe informacje otrzymam, gdy zobaczę numer IOPS, że nie dostanę numeru przepustowości (MB / s)?”

mFeinstein
źródło
3
Jeśli chcesz przenosić duże dane, zależy Ci na przepustowości. Jeśli potrzebujesz dużej ilości małych danych, potrzebujesz więcej IOPS. eg1 Jeśli istnieje jedna operacja, która może odczytać MB danych z urządzenia, potrzebujesz tylko 1 operacji, aby uzyskać wysoką przepustowość. eg2 Jeśli chcesz odczytać dziesiątki atrybutów plików, nie za każdym razem patrzysz na dużą ilość danych, ale musisz wykonać wiele operacji, aby pobrać małe kawałki danych. Przepustowość byłaby niska, ale trzeba by dużo operacji.
TafT

Odpowiedzi:

32

Wydajność

Przepustowość jest przydatna, gdy wykonujesz czynności takie jak kopiowanie plików. Kiedy robisz prawie cokolwiek innego, losowo czyta i zapisuje na dysku, co Cię ogranicza.

IOPS

IOPS zazwyczaj określa rozmiar każdego pakietu danych. Na przykład AWS gp2 może wykonać 10 000 IOPS przy rozmiarze ładunku 16 KiB . To mnoży się do 160 Mb / s. Jednak jest mało prawdopodobne, abyś cały czas używał pełnego ładunku, więc rzeczywista przepustowość prawdopodobnie będzie niższa. NB KiB ma 1024 bajty, KB to 1000 bajtów.

Ponieważ IOPS określa rozmiar pakietu, który daje również całkowitą przepustowość. Natomiast wysoka przepustowość nie oznacza, że ​​masz wysoki IOPS.

Scenariusze

Rozważ te scenariusze:

  • Uruchamianie komputera. Zastanów się nad różnicą między dyskiem SSD a wirującym dyskiem w komputerze, z którym wiele osób ma doświadczenie z pierwszej ręki. W przypadku wirującego dysku czas rozruchu może wynosić minutę, podczas gdy w przypadku dysku SSD może to spaść do 10–15 sekund. Wynika to z faktu, że wyższe IOPS prowadzą do mniejszych opóźnień, gdy wymagane są informacje. Przepustowość wirującego dysku jest dość dobra, 150 MB / s, chociaż SSD jest prawdopodobnie wyższy, nie dlatego jest szybszy - to mniejsze opóźnienie w zwrocie informacji.
  • Uruchamianie aktualizacji systemu operacyjnego. To działa na całym dysku, dodając i łatając pliki. Gdybyś miał niski IOPS, byłby wolny, niezależnie od przepustowości.
  • Uruchamianie bazy danych, na przykład wybieranie niewielkiej ilości danych z dużej bazy danych. Odczytuje z indeksu, odczytuje z wielu plików, a następnie zwraca wynik. Znowu idzie po całym dysku, aby zebrać informacje.
  • Granie w grę na komputerze. Prawdopodobnie ładuje dużą liczbę tekstur z całego dysku. W takim przypadku prawdopodobnie wymagane są IOPS i przepustowość.

Taśma LTO

Zastanów się przez chwilę nad systemem tworzenia kopii zapasowych na taśmie. LTO6 może robić 400 MB / s, ale (chyba tutaj) chyba nie może nawet zrobić jednego losowego procesora IOP, może on wynosić zaledwie kilka sekund na procesor IOP. Z drugiej strony prawdopodobnie prawdopodobnie wykona całą sekwencję IOPS, jeśli IOPS jest zdefiniowany jako odczyt lub zapis paczki danych na taśmie.

Jeśli spróbujesz uruchomić system operacyjny z taśmy, zajmie to dużo czasu, jeśli w ogóle zadziała. Dlatego IOPS jest często bardziej pomocny niż przepustowość.

Aby zrozumieć urządzenie pamięci masowej, prawdopodobnie chcesz wiedzieć, czy jest to losowy lub sekwencyjny IOPS oraz rozmiar IO. Z tego można uzyskać przepustowość.

AWS

Należy zauważyć, że AWS publikuje na tej stronie zarówno dane IOPS, jak i dane dotyczące przepustowości dla wszystkich typów pamięci . SSD ogólnego zastosowania (gp2) może wykonać 10 000 operacji IOPS 16 kB, co daje maksymalnie 160 MB / s. Provisioned IOPS (io1) to 20 000 IOPS 16 kB, co daje maksymalnie 320 MB / s.

Pamiętaj, że w przypadku woluminów gp2 otrzymujesz 30IOPS na GB, więc aby uzyskać 10 000 IOPS, potrzebujesz 333,33 GB woluminu. Nie pamiętam, czy woluminy io1 mają podobne ograniczenie (minęło trochę czasu, odkąd zrobiłem powiązane egzaminy, w których testowane są tego rodzaju rzeczy), ale podejrzewam, że tak, a jeśli tak, to prawdopodobnie 60IOPS na GB.

Wniosek

Wysoka przepustowość sekwencyjna jest użyteczna, aw niektórych przypadkach jest czynnikiem ograniczającym wydajność, ale wysoki IOPS może być ważniejszy w większości przypadków. Oczywiście nadal potrzebujesz rozsądnej przepustowości niezależnie od IOPS.

Tim
źródło
Rozumiem, że IOPS mierzy wydajność dostępu losowego, ale tak naprawdę nie pokazuje, jak szybko robisz różne rzeczy ... możesz robić 10000 IOPS, ale może to być coś wolnego lub szybkiego, jedynym sposobem na sprawdzenie jest to, ile MB / s operacja zużywa.
mFeinstein
IOPS zazwyczaj określa rozmiar ładunku danych. AWS mówi 16 kB. Zatem 10 000 IOPS przy 16 kB / s daje 160 MB / s.
Tim
2
Jednak 10000 IOPS przy 16 KB nie przełoży się na 20000 IOPS przy 8 KB (może ~ 11000). Oznacza to, że trzeba znać zarówno IOPS, jak i przepustowość, aby ocenić dysk / obciążenie.
boot4life
4
Żeby być pedantycznym, to wciąż 1 IOPS, a nie 1 IOP. To nie jest liczba mnoga
Matthew Steeples
1
Nie mogę myśleć o żadnym innym. Większość rzeczy, które są wysokie IOPS, są dość wysoką przepustowością, ale w większości przypadków są przydatne z powodu IOPS, a nie przepustowości. Innym przykładem może być relacyjna baza danych, choć nie jest to urządzenie pamięci masowej, ale oprogramowanie. Nie jestem pewien, co jeszcze chcesz z tego pytania, myślę, że koncepcja została ci dokładnie wyjaśniona. Wszystko, co ma duży czas lub opóźnienie wyszukiwania, prawdopodobnie ma niskie IOPS, ale przepustowość może być oddzielona i w niektórych przypadkach wysoka.
Tim
57

Wynika to z faktu, że sekwencyjna przepływność nie jest sposobem, w jaki występuje większość aktywności we / wy.

Losowe operacje odczytu / zapisu są bardziej reprezentatywne dla normalnej aktywności systemu, i jest to zwykle związane z IOPS.

Przesyłanie strumieniowe pornografii z jednego z moich serwerów do naszych klientów (lub przesyłanie do naszego CDN) ma bardziej sekwencyjny charakter i zobaczysz tam wpływ przepustowości.

Ale utrzymywanie bazy danych, która kataloguje pornografię i śledzi aktywność użytkownika za pośrednictwem witryny, będzie miało charakter losowy i będzie ograniczony przez liczbę małych operacji we / wy / sekundę, które jest w stanie wykonać w podstawowej pamięci.

Mogę potrzebować 2000 IOPS, aby móc uruchomić bazy danych przy maksymalnym zużyciu, ale widzę przepustowość 30 MB / s na poziomie dysku z powodu rodzaju aktywności. Dyski mają prędkość 1200 MB / s, ale IOPS stanowią ograniczenie w środowisku.

Jest to sposób opisania potencjału pojemnościowego systemu pamięci masowej. Dysk SSD może mieć zdolność do wykonania 80 000 operacji IOPS i przepustowości 600 MB / s. Możesz uzyskać tę przepustowość dzięki 6 zwykłym dyskom SAS 10k, ale przyniosłoby to jedynie około 2000 IOPS.

ewwhite
źródło
Czy możesz podać przykład, w którym IOPS dałby mi wgląd w wydajność mojego systemu, w którym MB / s nie będą przydatne?
mFeinstein
@mFeinstein Zobacz przykład porno powyżej.
ewwhite
33
+1 za przykład porno lol
mFeinstein
2
Ponadto system operacyjny prawdopodobnie wykonuje kilka przypadkowych prób dostępu. Przepływność sekwencji nie pomoże. To jest powód, aby uruchomić system operacyjny na dysku SSD, przynajmniej na komputerach PC.
sudo
3
Często widzę w pełni wykorzystane dyski, które robią ~ 2 MB / s. To dlatego, że jest to 100% losowe IO. Czasami niewiarygodnymi korzyściami mogą być sekwencyjne układanie danych na dysku (np. Usuwanie fragmentacji, indeksowanie w bazach danych).
boot4life
6

Chociaż odpowiedź ewwhite jest całkowicie poprawna, chciałem podać bardziej konkretne liczby, aby pomóc wyjaśnić, dlaczego różnica ma znaczenie z perspektywy czasu.

Jak już słusznie stwierdzono w ewwhite, większość aplikacji niezwiązanych z przesyłaniem strumieniowym wykonuje przede wszystkim niesekwencyjne operacje dyskowe, dlatego IOPS ma znaczenie oprócz teoretycznej szczytowej przepustowości.

Kiedy współpracownik i ja po raz pierwszy zainstalowaliśmy dyski SSD w naszych systemach programistycznych, aby zastąpić dyski HDD, z których wcześniej korzystaliśmy, przeprowadziliśmy na nich pomiary wydajności, które naprawdę podkreśliły, dlaczego to jest ważne:

Wyniki SATA HDD:

Sekwencyjna przepustowość odczytu: ~ 100 MB / s
Niessekwencyjna przepływność odczytu (2k bloków, IIRC): ~ 1 MB / s

Wyniki SSD dołączone do PCIe:

Sekwencyjna przepływność odczytu: ~ 700 MB / s
Niessekwencyjna przepływność odczytu (2k bloków, IIRC): ~ 125 MB / s

Jak wyraźnie widać z przykładu, samo podanie maksymalnej przepustowości dla każdego urządzenia dałoby wyjątkowo niedokładny obraz ich porównania. Dysk SSD jest tylko około 6-7 razy szybszy niż dysk twardy podczas sekwencyjnego odczytu dużych plików, ale jest ponad 100 razy szybszy podczas odczytu małych porcji danych z różnych części dysku. Oczywiście w przypadku dysków twardych ograniczenie to wynika głównie z faktu, że dyski HDD muszą fizycznie przesunąć głowicę r / w na żądaną ścieżkę, a następnie poczekać, aż żądane dane wirują pod głową, podczas gdy dyski SSD nie mają żadnych fizycznych części do ruchu.

Nasze czasy kompilacji poprawiły się znacznie bardziej niż sugerowałoby to proste porównanie maksymalnej przepustowości. Kompilacje, które wcześniej zajmowały ponad 30 minut, teraz kończą się za około minutę, ponieważ dyskowe operacje we / wy podczas dużej kompilacji polegają na odczytywaniu i zapisywaniu wielu oddzielnych plików źródłowych, które nie są indywidualnie bardzo duże i mogą być fizycznie rozproszone na całym dysku .

Podając zarówno przepustowość, jak i numery IOPS, możesz uzyskać o wiele lepsze wyobrażenie o tym, jak dane obciążenie będzie działać na danym urządzeniu magazynującym. Jeśli przesyłasz po prostu duże ilości danych, które nie są pofragmentowane, zbliżysz się do maksymalnej przepustowości. Jeśli jednak wykonujesz wiele małych odczytów i / lub zapisów, które nie są przechowywane sekwencyjnie na dysku, będziesz ograniczony przez IOPS.

reirab
źródło
Nie mierzyłeś też IOPS?
mFeinstein
3

Aby wykonać operację we / wy, napędy muszą przejść szereg operacji. W przypadku mechanicznego dysku twardego muszą to zrobić.

  1. Poszukaj właściwej ścieżki i wybierz właściwą głowę.
  2. Poczekaj, aż talerz obróci się do właściwej pozycji.
  3. Właściwie przenieś dane.

Czas potrzebny na 3 zależy od wielkości bloku danych, ale czas potrzebny na 1 i 2 jest niezależny od wielkości żądania.

Dane dotyczące wydajności nagłówka i IOP reprezentują skrajne przypadki. Nagłówkowe wartości przepustowości przedstawiają przypadek, w którym każda operacja obejmuje duży blok danych, więc napęd spędza większość czasu na przenoszeniu danych.

Nagłówek IOP przedstawia przypadek, w którym bloki danych są bardzo małe, więc większość czasu spędza się na szukaniu głowic i oczekiwaniu na obrót talerzy.

W przypadku wielu obciążeń bloki są wystarczająco małe, aby liczba bloków do przesłania była o wiele ważniejsza niż rozmiar bloków.

Peter Green
źródło
2

Istnieją dwa rodzaje wąskiego gardła, których można doświadczyć na woluminach IO (lub ogólnie IO).

Rzeczywista wydajność jest rzeczywiście mierzona w celu uwzględnienia komponentu opartego na ilości przenoszonych danych, skalowanego według dostępnego pasma lub podobnego rozmiaru kosztu jednostkowego *, ale istnieje również narzut związany z żądaniami, który jest stały, taki jak dysk, sieć lub wiele innych rzeczy.

koszt jednostkowy * rozmiar + koszty ogólne. równanie linii.

Jeśli koszt jednostkowy jest duży lub rozmiar jest duży, wówczas rozsądne jest ładowanie w oparciu o te wolumeny, takie jak sieci telefonii komórkowej, z drugiej strony czasami koszty ogólne są znacznie bardziej krytyczne.

Możesz sam zrobić prosty eksperyment, utworzyć katalog z kilkoma plikami 1 GB (lub cokolwiek praktycznego, coś tak dużego, że odczytanie / zapisanie zajmuje kilka sekund), a następnie utworzyć folder z milionem plików 100 bajtów (zauważ, że to 0,1 GB danych), a następnie sprawdź, co stanie się z Twoją przepustowością, gdy zaczniesz próbować przenosić wszystkie te rzeczy, powiedzmy między różnymi partycjami / dyskami - wydajność zostanie zmniejszona przez przepustowość dużych plików, a przepustnica przez liczba plików dla mniejszych rzeczy.

Zakładam, że amazon zna oba modele ładowania i po prostu stwierdził, że jeden z nich lepiej reprezentuje możliwości ich infrastruktury.

Istnieje limit wielkości procesora IOP, który jest zasadniczo związany z kwotą, którą sklep może i tak przenieść w „cyklu”, w związku z czym duże żądania nadal kosztują wiele IOPS.

Jest tu ciekawy kawałek od samych Amazon o IOPS i kosztach, a „oszczędności” są przekazywane przez optymalizacje

Charakterystyka i monitorowanie we / wy

Nie przeczytałem wszystkiego, ale wygląda interesująco, jeśli jesteś ciekawy tego obszaru.

Iain Price
źródło
2

Odpowiadając na twoje pytanie

„Jakie nowe informacje otrzymam, gdy zobaczę numer IOPS, że nie dostanę numeru przepustowości (MB / s)?”

bezpośrednio, to ile operacji IO o określonej głębokości kolejki i rozmiarze pliku może wykonać pamięć na sekundę . Przepustowość można obliczyć w danych warunkach przy użyciu następującego wzoru:

Rozmiar pliku IOPS * = przepustowość

Testy pamięci mogą generować różną liczbę IOPS w zależności od rozmiaru pliku i głębokości kolejki. Przy głębokości kolejki = 1 lub 2 kontroler nie korzysta z buforowania, podczas gdy przy głębokości kolejki 32, 256, 512 liczba rośnie kilkakrotnie i niewiele się zmienia. Przy rozmiarze pliku liczba IOPS 128 KB może być niższa przy plikach 4KB, ale przepustowość - wyższa.

Najlepszym sposobem oceny wydajności pamięci jest poszukiwanie testów IOPS i przepustowości przy różnych rozmiarach bloków i głębokości kolejki.

Eugene
źródło
Wydaje mi się, że trochę mylisz IOPS z przepustowością ... Przepustowość nie jest synonimem ciągłego dostępu, ale całkowite MB / s, które pamięć była w stanie przetworzyć w danym momencie ... Więc kiedy mówisz, że HDD i dysk SSD miałby taką samą przepustowość, służy do ciągłego dostępu ... Ponieważ istnieje również przepustowość do dostępu losowego ... O wiele mniej w przypadku dysków twardych z powodu czasu wyszukiwania.
mFeinstein
Powinieneś więc uwzględnić w swojej odpowiedzi, że masz na myśli ciągły dostęp na początku i losowy dostęp na końcu, ponieważ IOPS nie jest również synonimem losowego dostępu ... Właśnie wtedy, gdy bardziej sensowne jest używanie IOPS jako pomiar
mFeinstein
@mFeinstein Zredagowałem odpowiedź, spójrz.
Eugene
1

Ogólnie rzecz biorąc, IOPS jest trudniejszy do uzyskania niż przepustowość. Jeśli masz dużo IOPS, będziesz miał wystarczającą przepustowość przez większość czasu.

W przypadku klasycznych dysków twardych liczba osi jest czynnikiem ograniczającym, ponieważ głowa musi być fizycznie poruszana na każdym dysku: i jest strasznie powolna. Dyski SSD mają znacznie lepszą pojemność IOPS.

Jeśli masz tylko jednego użytkownika, który kopiuje jeden duży plik do sieci, możesz mieć tylko kilkanaście prób uzyskania danych, a reszta będzie przesyłana strumieniowo tylko z dysku.

Jeśli jednak trafiasz do bazy danych lub masz wielu współbieżnych użytkowników, będziesz musiał uzyskać dostęp do różnych części pamięci w tym samym czasie, dzięki szybkiemu wzrostowi IOPS.

Wystarczy zaktualizować 10 wierszy równolegle w relacyjnej bazie danych, co może zakończyć się wygenerowaniem setek operacji wejścia / wyjścia: odczytywanie indeksów, odczytywanie danych, dołączanie pliku dziennika, aktualizowanie indeksów i danych. Większość systemów operacyjnych i baz danych bardzo mocno stara się ograniczyć liczbę operacji we / wy poprzez buforowanie i opóźnianie / grupowanie operacji we / wy, jeśli to możliwe.

Xavier Nicollet
źródło
1

Odpowiem też na własne pytanie, ponieważ myślę, że większość odpowiedzi poszła nie na temat, a odpowiedź może być o wiele prostsza:

Jeśli spojrzysz tylko na przepustowość urządzeń magazynujących, możesz przegapić to, co się dzieje ... Jeśli masz niską przepustowość (niskie MB / s), możesz mieć wolne urządzenie LUB mieć dużo losowego dostępu na HDD lub innym urządzeniu który nie obsługuje ładnego dostępu losowego.

Analizując IOPS i znając wielkość porcji każdej operacji I / O, możesz dowiedzieć się, ile dostępu urządzenie pamięci jest w stanie obsłużyć i jaka jest przepustowość tych IOPS (wielkość porcji * IOPS).

Patrząc na wysokie IOPS, możesz stwierdzić, że twoje urządzenie pamięci masowej obsługuje wiele losowego dostępu, nawet jeśli wiąże się to z niską przepustowością .... a może szukasz niskich IOPS, które mają tę samą niską przepustowość, co oznacza, że ​​twoje urządzenie jest po prostu bezczynny.

Tak więc, patrząc na IOPS, możemy uzyskać wgląd w to, co tak naprawdę oznacza przepływność, oba się uzupełniają.

mFeinstein
źródło
IOPS = Wejścia / Wyjścia na sekundę, nie chodzi o liczbę mnogą, a końcowego S nie należy pomijać. :)
Eugene
1
Nie chodzi o liczbę mnogą, widziałem niektórych ludzi odnoszących się do IOP jako skrót od „I / O OPeration”, jak to brzmi jak ... Ale tak, może to prowadzić do zamieszania, więc
zastąpię