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.

  • 💾 Nazywany również: Testowanie wydajności pamięci masowej, ponieważ szybkość ma tak samo duże znaczenie jak prawidłowe umiejscowienie.
  • ⚠️ Dlaczego jest to ważne: Powolne przechowywanie danych skutkuje długim czasem reakcji, długotrwałymi zapytaniami i niższą dostępnością aplikacji.
  • 🧩 Trzy typy: Testowanie aplikacji, symulacja aplikacji i benchmarking, każde z nich ma swoje własne zadania.
  • 📏 Główne wskaźniki: IOPS, opóźnienie, przepustowość i głębokość kolejki należy zawsze odczytywać łącznie, a nie w izolacji.
  • 🧪 Jak to działa: Określ cele, określ rozmiar zestawu danych, wybierz realistyczne kombinacje odczytu i zapisu, a następnie zwiększ obciążenie.
  • 🛠️. Obróbka: Syntetyczne generatory wejścia/wyjścia generują powtarzalne liczby, czego polecenia kopiowania plików nigdy nie potrafią.
  • ???? Typowe błędy: Monitorowanie niewłaściwego serwera, pomińping czyszczenie pamięci podręcznej i ignorowanie wykorzystania procesora.

Samouczek dotyczący testowania pamięci masowej, obejmujący typy, koncepcje i typowe błędy

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.

Przegląd testów pamięci masowej pokazujący aplikację zapisującą dane przez system plików na urządzeniu pamięci masowej

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.

FAQ

Testowanie głośności Zwiększa ilość danych przechowywanych przez aplikację i obserwuje pogorszenie jej działania. Testowanie pamięci masowej koncentruje się na warstwie urządzenia znajdującej się poniżej, mierząc, jak szybko dane te mogą zostać zapisane i odczytane.

Każda lokalizacja, do której aplikacja zapisuje dane: katalogi danych, foldery dziennika i tymczasowe, miejsca docelowe przesyłania i ścieżki archiwów. Każda z nich wymaga sprawdzenia, czy plik trafia we właściwe miejsce i czy wolne miejsce jest poprawnie zgłaszane.

Metryki pozostają bez zmian, ale dodawane są limity IOPS, limity pakietów i sąsiedzi z zakłóceniami. Należy działać wystarczająco długo, aby wyczerpać limit pakietów, w przeciwnym razie zmierzona wartość odzwierciedla tymczasowy limit, a nie stan ustalony.

Modele uczenia maszynowego bazują na normalnych krzywych IOPS i opóźnień, a następnie oznaczają przebiegi odchylające się od normy przed przekroczeniem progu. Te same modele prognozują wzrost pojemności, więc wyczerpanie dysku jest przewidywane, a nie wykrywane w środowisku produkcyjnym.

Drugi pilot GitHub Szybko tworzy pliki zadań, wrappery czyszczące pamięć podręczną i skrypty analizujące wyniki. Tester nadal podaje rozmiar bloku, głębokość kolejki i czas trwania, ponieważ pochodzą one z monitorowania produkcji, a nie z szablonu.

To poprawny przypadek testowy, a nie przypadek. Aplikacja powinna ostrzegać, łagodnie degradować się i rejestrować stan, a nie kończyć działanie. Odzyskiwanie ze stanu pełnego dysku należy do… testowanie regeneracji.

Zazwyczaj stan pamięci podręcznej, głębokość kolejki lub długość przebiegu różniły się między nimi. Kondycjonowanie urządzenia również ma znaczenie — świeżo sformatowany dysk SSD zapisuje dane szybciej niż ten, który był wielokrotnie zapełniany i nadpisywany.

Testerzy wydajności zazwyczaj wykonują test, a administratorzy infrastruktury lub bazy danych dostarczają konfigurację urządzenia i wzorce dostępu do środowiska produkcyjnego. Wynik można obronić tylko wtedy, gdy obie strony zgadzają się, że obciążenie było realistyczne.

Podsumuj ten post następująco: