Użyteczny test pamięci masowej dopasowuje rozmiar operacji, wzorzec dostępu, współbieżność i wymagania trwałości do aplikacji. Zapisz warunki testu i rozkład opóźnień, a następnie potwierdź wynik pomiarami aplikacji.
Zacznij od pytania o pamięć masową, a nie od wyniku
Zdecyduj, co chcesz wiedzieć, zanim uruchomisz test porównawczy. Możesz badać powolne zatwierdzania bazy danych, przepustowość dystrybucji plików lub proces kompilacji tworzący wiele małych plików. Te obciążenia nie proszą dysku o to samo. Duża sekwencyjna kopia może wyglądać imponująco, mówiąc niewiele o opóźnieniu odczuwanym przez usługę wykonującą małe losowe odczyty.
NVMe został zaprojektowany dla nośników nieulotnych i wydajnego równoległego wejścia/wyjścia, ale nazwa jego protokołu nie opisuje każdej części hostowanej ścieżki pamięci masowej. Wirtualizacja, system plików, rywalizacja o zasoby i aplikacja nadal mają znaczenie. Napisz hipotezę testu, na przykład czy opóźnienie pamięci masowej spowalnia konkretną operację, zamiast próbować uzyskać liczbę dowodzącą, że cały serwer jest szybki.
Opisz obciążenie w powtarzalnych kategoriach
Zapisz rozmiar operacji, wzorzec sekwencyjny lub losowy, mieszankę odczytu do zapisu, liczbę zadań i głębokość kolejki. Uwzględnij rozmiar zbioru danych i czas trwania testu. Dokumentacja fio wyjaśnia te elementy sterujące obciążeniem i dostępne silniki wejścia/wyjścia. Zamierzona głębokość może nie zostać osiągnięta przez każdy silnik lub konfigurację, więc czytaj raportowane zachowanie, a także żądaną konfigurację.
Zachowaj kopię opisu testu obok wyniku. Zanotuj system operacyjny, system plików, opcje montowania, aktywność usług i dostępną pojemność. Jeśli porównujesz konfiguracje, zmieniaj jeden istotny warunek naraz. Testu z innym wzorcem dostępu lub współbieżnością nie można uczciwie przedstawiać tak, jakby zmienił się tylko nośnik pamięci masowej.
| Wzorzec aplikacji | Wymiar testu do opisania | Wynik do zbadania |
|---|---|---|
| Dostarczanie dużych plików | Odczyty sekwencyjne i równocześni klienci | Utrzymana przepustowość i użycie CPU |
| Wyszukiwanie rekordu | Małe losowe odczyty i reprezentatywna współbieżność | Rozkład opóźnień i ukończone operacje |
| Trwała transakcja | Wymagania zapisu i synchronizacji | Opóźnienie związane z zatwierdzaniem, a nie tylko szybkość zapisu buforowanego |
| Kompilacja lub rozpakowywanie | Mieszane operacje na małych plikach | Czas trwania zadania od początku do końca i oczekiwania wejścia/wyjścia |
Kontroluj buforowanie, nie udając, że nie ma znaczenia
Zbiór danych mieszczący się w pamięci może po pierwszym przebiegu mierzyć głównie zachowanie pamięci podręcznej. Może to być użyteczne, jeśli aplikacja normalnie korzysta z tej samej pamięci podręcznej, ale nie należy tego oznaczać jako surowej wydajności urządzenia. Świadomie wybierz, czy test bada ciepłą ścieżkę aplikacji, chłodniejszy zbiór danych czy tryb wejścia/wyjścia mający ograniczyć efekt buforowania systemu operacyjnego.
Obsługa bezpośredniego wejścia/wyjścia i wyrównanie zależą od platformy i silnika. Nie wyraża też automatycznie wymagań trwałości aplikacji ani nie eliminuje każdej pamięci podręcznej w stosie. Jasno określ wybrany tryb i unikaj porównywania testu buforowanego z niebuforowanym tak, jakby reprezentowały tę samą pracę. Oddziel rozgrzewkę od mierzonych przedziałów, jeśli pomaga to w interpretacji.
Czytaj ogony opóźnień razem z przepustowością
Średnie opóźnienie może ukryć wolne operacje wpływające na rzeczywiste żądania. Badaj raportowane percentyle i liczbę próbek, na których się opierają. Wysoki percentyl opisuje granicę, poniżej której w tym teście znalazła się podana część zaobserwowanych operacji; nie jest trwałą gwarancją usługi. Krótkie lub niereprezentatywne przebiegi dają ograniczone dowody o ruchliwych okresach produkcyjnych.
Wyższa głębokość kolejki może poprawić ukończoną przepustowość, zwiększając czas oczekiwania. Ten kompromis może pasować do przetwarzania wsadowego i szkodzić usłudze interaktywnej. Porównuj wyniki przy współbieżności zbliżonej do aplikacji i jednocześnie monitoruj CPU oraz presję wejścia/wyjścia. Zatrzymaj się, zanim test spowoduje niepotrzebne zakłócenia dla innego obciążenia współdzielącego środowisko.
Utrzymuj test autoryzowany i nieniszczący
Użyj dedykowanego katalogu testowego lub przygotowanego jednorazowego wolumenu, z wystarczającą ilością wolnego miejsca i wyraźnym planem sprzątania. Nigdy nie kieruj testu zapisu na niezweryfikowane surowe urządzenie ani produkcyjny zbiór danych. Przed rozpoczęciem sprawdź cel i zachowanie zapisu narzędzia, a zacznij od ograniczonego przebiegu. Syntetyczne wejście/wyjście może zużywać pojemność i zakłócać usługi, nawet jeśli nie nadpisuje użytecznych plików.
W przypadku oceny zbliżonej do produkcyjnej uzgodnij okno konserwacyjne i zachowaj monitorowanie aplikacji. Gdy to możliwe, używaj danych sfabrykowanych. Nie wnioskuj o niezawodności pamięci masowej z testu szybkości: kontrole integralności, kopie zapasowe i przywracanie to odrębne zadania. Urządzenie, które ukończyło test porównawczy, nadal potrzebuje strategii odzyskiwania na wypadek usunięcia, błędów oprogramowania lub utraty maszyny.
Zamknij pętlę dowodami z aplikacji
Załóżmy, że usługa raportowania spędza dużo czasu, czekając na losowe odczyty. Zespół testuje reprezentatywny wzorzec odczytu, a następnie powtarza rzeczywisty raport na porównywalnych danych. Jeśli raport się poprawia, a jego pozostała praca pozostaje stabilna, wynik wspiera hipotezę o pamięci masowej. Jeśli nie, zbadaj projekt zapytania, pamięć lub inną zależność, zamiast powtarzać szersze testy syntetyczne.
Pulse NVMe i wybrane dedykowane konfiguracje wymieniają pamięć masową NVMe w katalogu SwissOctet. Ich etykiety to specyfikacje, a nie publikowane benchmarki aplikacji. Użyj kontrolowanej metody, aby ocenić dostarczone środowisko, i zachowaj warunki wraz z wynikami. Decyzja staje się mocniejsza, gdy pomiar pamięci masowej i wynik widoczny dla użytkownika odpowiadają na to samo pytanie.
Twoja praktyczna lista kontrolna.
- Najpierw zdefiniuj pytanie aplikacji.
- Zapisz wzorzec, rozmiar bloku, współbieżność i czas trwania.
- Podaj założenia dotyczące pamięci podręcznej i trybu wejścia/wyjścia.
- Sprawdź percentyle opóźnień oraz przepustowość.
- Użyj zweryfikowanego jednorazowego celu i ograniczonego początkowego obciążenia.
- Potwierdź wynik testem aplikacji.
Szczegóły, które mają znaczenie.
Czy sekwencyjne kopiowanie wystarczy do porównania pamięci masowej bazy danych?+
Zwykle nie. Dostęp do bazy danych może obejmować małe losowe odczyty, zapisy i synchronizację. Odwzoruj odpowiedni wzorzec i zweryfikuj rzeczywistą aplikację.
Czy bezpośrednie wejście/wyjście dowodzi trwałych zapisów?+
Nie. Buforowanie i trwałość to odrębne zagadnienia. Dopasuj zachowanie synchronizacji wymagane przez aplikację.
Czy mogę opublikować jeden test jako gwarantowaną prędkość planu?+
Nie. Opublikuj jego warunki i zakres. Wynik zmierzony w jednym przebiegu nie jest gwarancją poziomu usługi ani przyszłej wydajności.
Przejdź do źródła.
Te źródła wspierają koncepcje techniczne w tym przewodniku. Przed zmianą systemu produkcyjnego zapoznaj się z aktualną dokumentacją.
- fio: dokumentacja elastycznego testera wejścia/wyjścia fio.readthedocs.io
- NVM Express: przegląd specyfikacji i FAQ nvmexpress.org
- Jądro Linux: Pressure Stall Information docs.kernel.org
Wskazówki redakcyjne SwissOctet. Przykłady są ilustracyjne. Specyfikacje usług, dostępne opcje i warunki umowne należy zweryfikować osobno.