Czym jest testowanie pamięci masowej? Typy Concepts & Przykład
⚡ Inteligentne podsumowanie
Testowanie pamięci masowej pozwala sprawdzić, czy aplikacja zapisuje dane w odpowiednich katalogach i czy dysponuje wystarczającą ilością miejsca na dysku, aby uniknąć nieoczekiwanego zakończenia działania. Jednocześnie mierzona jest szybkość reakcji pamięci masowej przy realistycznym obciążeniu.
Czym jest testowanie pamięci masowej?
Testowanie pamięci To rodzaj testowania oprogramowania, który służy do weryfikacji, czy testowana aplikacja przechowuje odpowiednie dane w odpowiednich katalogach oraz czy ma wystarczająco dużo miejsca, aby zapobiec nieoczekiwanemu zamknięciu z powodu braku miejsca na dysku. Nazywa się to również testowanie wydajności pamięci masowej.
Technika ta znajduje się po stronie dyscypliny, która nie ma charakteru funkcjonalnego: podobnie jak inne formy testy niefunkcjonalnenie mówi nic o tym, czy funkcja generuje prawidłową odpowiedź, a wszystko o tym, czy system będzie w stanie nadal generować odpowiedzi w miarę wzrostu ilości danych i obciążenia wejścia/wyjścia.
Dlaczego testowanie pamięci masowej?
Pamięć masowa to najwolniejsza warstwa, z którą styka się większość aplikacji, więc jej słabość ujawnia się wszędzie indziej. Cztery powody uzasadniają dedykowany cykl testowy.
- Powolne przechowywanie danych oznacza długi czas reakcji, długotrwałe zapytania i niższą dostępność aplikacji.
- Powolne przechowywanie danych zwiększa obciążenie związane z utrzymaniem infrastruktury serwerowej.
- Pomaga to ustalić praktyczne limity pamięci masowej systemu przed wdrożeniem.
- Pomaga zrozumieć, jak system reaguje, gdy urządzenie sprzętowe zostanie wymienione lub ulepszone.
Poniższy diagram przedstawia testowanie pamięci masowej w tym kontekście — aplikacja, system plików i urządzenie fizyczne znajdują się na tej samej ścieżce, a opóźnienie w dowolnym jej punkcie dociera do użytkownika.
Rodzaje testowania pamięci
Stosowane są trzy podejścia, które różnią się głównie tym, jak bardzo obciążenie pracą przypomina rzeczywiste zastosowanie.
- Testowanie aplikacji: Testowanie aplikacji przy użyciu przykładowych zapytań w środowisku przypominającym środowisko produkcyjne.
- Symulacja aplikacji: Przeprowadzenie testów przy użyciu standardowego oprogramowania, które zachowuje się podobnie do aplikacji docelowej.
- Benchmarking: Przeprowadzenie testów przy użyciu standardowego oprogramowania do testów porównawczych, które generuje syntetyczne, powtarzalne obciążenie.
Pierwsze rozwiązanie daje najbardziej realistyczne i najmniej przenośne wyniki; trzecie podaje liczby, które można porównywać między urządzeniami i dostawcami, ale niewiele mówi o tym, jak będzie zachowywać się sama aplikacja.
Typowe testy Concepts Zaangażowany podczas testów przechowywania
Każdy z tych trzech typów odpowiada odrębnemu zestawowi działań, podsumowanym poniżej.
| Rodzaje testowania pamięci | Przykład typowych działań związanych z testowaniem pamięci masowej |
| Testowanie aplikacji | Porównaj czasy reakcji OLTP Porównaj czasy wykonywania wsadów Porównaj stałe szybkości przesyłania strumieniowego |
| Symulacja aplikacji | Przetestuj szczytowe IOPS pamięci masowej dla baz danych Testowanie szczytowej przepustowości pamięci masowej w środowiskach przesyłania strumieniowego danych Przetestuj opóźnienie pamięci masowej dla aplikacji obsługujących wiadomości lub innych aplikacji jednowątkowych |
| Benchmarking | Testowanie pod kątem uszkodzenia danych |
Kluczowe wskaźniki testowania pamięci masowej
Wyniki pamięci masowej są prezentowane za pomocą niewielkiego zestawu liczb. Odczytanie dowolnego z nich osobno to najszybszy sposób na wyciągnięcie błędnego wniosku, ponieważ są one ze sobą sprzeczne.
| metryczny | Co mierzy | Gdzie to jest najważniejsze |
| IOPS | Liczba operacji odczytu i zapisu wykonanych na sekundę, niezależnie od rozmiaru | Bazy danych transakcyjnych i małe losowe zapisy |
| Utajenie | Czas między rozpoczęciem i zakończeniem pojedynczej operacji wejścia/wyjścia | Ścieżki przesyłania wiadomości i aplikacji jednowątkowych |
| Wydajność | Objętość danych przesyłanych na sekundę, zwykle w MB/s | Przetwarzanie wsadowe, tworzenie kopii zapasowych i strumieniowanie obciążeń |
| Głębokość kolejki | Liczba oczekujących żądań wysłanych w tym samym czasie | Każde uruchomienie, które musi odzwierciedlać rzeczywistą współbieżność |
Szczególną uwagę należy zwrócić na głębokość kolejki. Wysyłanie pojedynczego żądania na raz skutkuje dokładnym opóźnieniem dla pojedynczego żądania, ale sztucznie zaniżonymi wartościami IOPS i przepustowości. Dlatego urządzenie może wydawać się wolne w teście, a szybkie w środowisku produkcyjnym, lub odwrotnie.
Jak przeprowadzać testy pamięci masowej
Test przechowywania jest wiarygodny tylko wtedy, gdy warunki, w jakich został przeprowadzony, są odpowiednie. Poniższa sekwencja zapewnia powtarzalność wyników.
- Krok 1) Określ cel. Zdecyduj, czy przebieg ma na celu sprawdzenie gotowości bazy danych, znalezienie limitu przepustowości, czy porównanie dwóch urządzeń. Każdy cel implikuje inne obciążenie, a ich połączenie generuje liczby, na które nikt nie może zareagować.
- Krok 2) Określ realistyczny rozmiar zbioru danych. Zestaw roboczy na tyle mały, aby zmieścić się w pamięci podręcznej, mierzy pamięć podręczną, a nie pamięć masową. Dopasuj wolumen danych produkcyjnych lub przynajmniej znacznie przewyższ rozmiar pamięci podręcznej.
- Krok 3) Wybierz kombinację i wzór odczytu/zapisu. Dostęp losowy i sekwencyjny zachowują się zupełnie inaczej na tym samym urządzeniu, podobnie jak miksy 70/30 do odczytu i zapisu oraz serie tylko do zapisu. Należy pobrać miks z monitoringu produkcyjnego, a nie z domyślnego.
- Krok 4) Ustaw głębokość kolejki i liczbę wątków. Kontrolują one, ile współbieżności dociera do urządzenia, dlatego należy je rejestrować przy każdym wyniku — nie da się odtworzyć wartości podanej bez nich.
- Krok 5) Wyczyść pamięć podręczną i rozgrzej się. Usuń pamięć podręczną serwera i urządzenia pomiędzy przebiegami, a następnie odrzuć pierwszy interwał, aby porównywać wartości w stanie ustalonym, a nie te przy pierwszym kontakcie.
- Krok 6) Biegnij wystarczająco długo. Krótkie przebiegi ukrywają klif zapisu, który pojawia się, gdy dysk SSD wyczerpie swój bufor zapisu. Przedłużone przebiegi go ujawniają.
- Krok 7) Monitoruj cały stos. Rejestruj wykorzystanie procesora, pamięci i sieci obok liczników pamięci masowej, aby wąskie gardło w innym miejscu nie zostało błędnie odczytane jako limit pamięci masowej.
- Krok 8) Powtórz i porównaj. Uruchom tę samą konfigurację więcej niż jeden raz i zachowaj logi; różnice w wydajności pomiędzy kompilacjami są widoczne tylko w odniesieniu do zapisanej linii bazowej.
Ponieważ do każdego pomiaru opartego na obciążeniu stosuje się tę samą dyscyplinę, przebiegi te są zwykle planowane razem z test wydajności i zaplanowane przed zamrożeniem wersji Release Candidate.
Narzędzia do testowania pamięci masowej
Narzędzia dzielą się na dwie grupy, a większość zespołów potrzebuje obu.
- Syntetyczne generatory wejścia/wyjścia. Narzędzia takie jak fioIometer i sysbench generują precyzyjnie opisane obciążenie — deklarowany jest rozmiar bloku, kombinacja operacji odczytu i zapisu, głębokość kolejki i czas trwania, dzięki czemu przebieg można dokładnie powtórzyć na innym urządzeniu.
- Narzędzia do ładowania na poziomie aplikacji. Kierowcy tacy jak JMeter ćwiczyć samą aplikację, dzięki czemu magazyn będzie widział ten sam wzorzec dostępu, który tworzą prawdziwi użytkownicy, w tym plany zapytań i zachowanie indeksu, którego narzędzie syntetyczne nie może odtworzyć.
OperaLiczniki systemu ting dopełniają obrazu. Niezależnie od tego, jakie narzędzie generuje obciążenie, dane dotyczące pamięci masowej należy odczytać obok liczników procesora, pamięci i sieci — kilka technik testowania pamięci masowej, w tym testy porównawcze oraz badanie objętości, polegaj na pełnym widoku stosu, aby poprawnie zinterpretować wynik.
Błędy podczas testowania pamięci masowej
Większość nieprawidłowych wyników przechowywania tracwracamy do niewielkiej liczby błędów, których można uniknąć.
- Monitorowanie niewłaściwej wydajności serwera, w wyniku czego liczby opisują maszynę, która nie jest testowana.
- Porównywanie urządzeń pamięci masowej bez wcześniejszego wyczyszczenia pamięci podręcznej serwera, co pozwala mierzyć pamięć, a nie dysk.
- Zapomnienie o monitorowaniu wykorzystania procesora podczas testów, co powoduje, że wąskie gardło związane z procesorem ukrywa się za objawem związanym z pamięcią masową.
- Testowanie wydajności pamięci masowej za pomocą poleceń kopiowania plików, które są jednowątkowe, wspomagane przez pamięć podręczną i niepowtarzalne.

