Jak głębokość kolejki i rozmiar bloku wpływają na opóźnienie losowego odczytu w domowym NAS?

Eva Wong jest Technicznym pisarzem i stałym majsterkowiczem w ZimaSpace. Całe życie geek z pasją do homelabów i oprogramowania open-source, specjalizuje się w tłumaczeniu skomplikowanych koncepcji technicznych na przystępne, praktyczne przewodniki. Eva wierzy, że samodzielne hostowanie powinno być zabawą, a nie czymś onieśmielającym. Poprzez swoje samouczki umożliwia społeczności rozwiewanie tajemnic konfiguracji sprzętu, od budowy pierwszego NAS po opanowanie kontenerów Docker.

Głębokość kolejki i rozmiar bloku zmieniają opóźnienie odczytu losowego, ponieważ kontrolują, ile pracy jest zgłaszane naraz i ile danych przesyła każda operacja. Test o niskiej głębokości kolejki i małym bloku mierzy, jak szybko kończy się jedno żądanie, podczas gdy test o wysokiej głębokości kolejki mierzy, ile pracy równoległej ścieżka pamięci masowej może utrzymać.

Ten sam NAS może więc wykazywać umiarkowane IOPS 4K przy QD1, znacznie wyższe IOPS 4K przy QD32 oraz silną przepustowość przy dużych blokach bez sprzeczności. Każdy wynik opisuje inne obciążenie, a najszybsza wartość benchmarku może być najmniej reprezentatywna dla interaktywnej bazy danych, biblioteki zdjęć czy aplikacji kontenerowej.

Co właściwie kontrolują głębokość kolejki i rozmiar bloku?

Głębokość kolejki to liczba operacji I/O oczekujących na danym poziomie pomiaru. głębokość kolejki kontroluje liczbę oczekujących żądań I/O, podczas gdy rozmiar bloku definiuje ilość danych przesyłanych przez każde żądanie.

Test z QD1 wysyła jedną operację i czeka na jej zakończenie przed wysłaniem następnej. Test QD32 pozwala wielu operacjom czekać lub wykonywać się równolegle, dając dyskowi, kontrolerowi, macierzy i sieci więcej możliwości nakładania pracy.

Te wartości występują na kilku warstwach. Kolejka wątku benchmarku, kolejka bloków systemu operacyjnego, HBA, kolejka zgłoszeń NVMe, kredyty protokołu NAS i poszczególne dyski mogą mieć różne liczby oczekujących operacji.

Dlaczego QD1 ujawnia czas obsługi pamięci masowej?

Przy jednym oczekującym żądaniu kolejna operacja nie może ukryć się za pracą równoległą, więc QD1 ujawnia czas obsługi pojedynczego żądania. Wynik obejmuje czas obsługi urządzenia oraz narzut protokołu, systemu plików, kontrolera, sieci i klienta.

QD1 jest więc przydatne do zadań skierowanych do użytkownika, które wykonują jedno lub kilka zależnych odczytów: otwieranie metadanych, ładowanie strony bazy danych, odczyt miniaturki lub podążanie za wskaźnikiem do następnej struktury.

To nie jest pełny test pojemności. Nowoczesny dysk SSD lub macierz z paskowaniem może obsługiwać znacznie więcej równoległych operacji niż zapewnia QD1, więc wynik może zaniżać maksymalną łączną liczbę IOPS, jednocześnie dokładnie odzwierciedlając czas reakcji pojedynczego żądania.

Dlaczego wyższa głębokość kolejki może jednocześnie zwiększać IOPS i opóźnienia?

Większa liczba oczekujących zadań może utrzymać kanały pamięci masowej zajęte i zwiększyć liczbę zakończonych operacji na sekundę, ale większa głębokość kolejki może jednocześnie podnosić IOPS i opóźnienia. Każde żądanie może spędzać więcej czasu na oczekiwaniu przed obsługą.

Benchmark raportuje więcej łącznych zakończeń, ponieważ system nakłada pracę na siebie, a nie dlatego, że każde żądanie stało się szybsze. Gdy urządzenie lub macierz osiągnie swoją pojemność obsługi, dodatkowa głębokość kolejki głównie wydłuża kolejkę oczekujących.

Dlatego wysokie IOPS przy dużej głębokości kolejki i niskie opóźnienia interaktywne to oddzielne cele. Serwer kopii zapasowych lub zadanie analityczne może korzystać z głębokiej równoległości, podczas gdy żądanie aplikacji zależy od czasu zakończenia jednego krytycznego odczytu.

Jak rozmiar bloku zmienia IOPS, przepustowość i czas oczekiwania?

IOPS liczy operacje bez opisu, ile bajtów każda operacja przesuwa. rozmiar bloku zmienia równowagę między IOPS a przepustowością. Tysiąc odczytów 4K przesuwa znacznie mniej danych niż tysiąc odczytów 128K.

Małe bloki podkreślają narzut na operację i są powszechne dla stron baz danych, metadanych i stanu aplikacji. Większe bloki poprawiają efektywność transferu i przepustowość, ale zajmują urządzenie, sieć i kontroler na więcej bajtów na żądanie.

Większy blok może zmniejszyć liczbę operacji IOPS potrzebnych do osiągnięcia danej przepustowości, jednocześnie zwiększając czas obsługi każdej operacji. Aplikacje mieszane potrzebują obu wymiarów, ponieważ NAS może obsługiwać małe odczyty metadanych obok dużych transferów multimediów lub kopii zapasowych.

Dlaczego pamięć podręczna i równoległość sprawiają, że wyniki wyglądają lepiej niż odczucia aplikacji?

Wyniki testów mogą być zdominowane przez pamięć RAM, pamięć podręczną kontrolera, pamięć podręczną klienta lub powtarzany dostęp do małego zestawu roboczego. pamięć podręczna i współbieżność mogą ukrywać opóźnienia zimnych odczytów.

Równoległe procesy testowe mogą również skuteczniej rozdzielać żądania pomiędzy dyski, kanały NAND, rdzenie CPU, kanały SMB lub kolejki NVMe niż pojedynczy wątek aplikacji. Test dowodzi skalowania łącznego, a nie tego, że jedno zimne odczytanie aplikacji odnosi tę samą korzyść.

Używaj zestawu danych większego niż odpowiednie pamięci podręczne podczas testowania nośników pamięci i przeprowadzaj oddzielne testy z ciepłą pamięcią podręczną, gdy buforowanie aplikacji jest częścią rzeczywistego projektu. Mieszanie obu daje wynik, którego wąskie gardło jest niejasne.

Jak test losowego odczytu NAS w domu powinien odpowiadać rzeczywistym obciążeniom?

Przydatny benchmark zmienia wymiary, które zmieniają rzeczywiste aplikacje. realistyczne testy muszą odpowiadać głębokości kolejki obciążenia, zamiast podawać jedną maksymalną wartość IOPS.

Testuj QD1 i kilka umiarkowanych głębokości, uwzględnij małe odczyty 4K lub 8K oraz większe bloki używane przez narzędzia multimedialne lub kopii zapasowych, i rejestruj średnie oraz p95, p99 i maksymalne opóźnienia. Przy porównywaniu zmian w pamięci masowej zachowaj stałe ustawienia klienta, protokołu, szyfrowania i zestawu danych.

Uruchom test losowego odczytu zarówno samodzielnie, jak i obok obciążeń tła, które faktycznie współdzielą NAS. Izolowany benchmark może dokładnie zmierzyć ścieżkę pamięci masowej, ale nie ujawni opóźnień doświadczanych przez użytkowników podczas pracy aplikacji, tworzenia kopii zapasowych, indeksowania czy konfliktów parzystości.

Kształt testu Co to podkreśla Częste błędne interpretacje
4K QD1 Czas odpowiedzi pojedynczego małego odczytu Zakładając, że pokazuje maksymalne IOPS urządzenia
4K przy wysokiej głębokości kolejki Równoległa pojemność małych operacji I/O Zakładając, że każde żądanie ma niskie opóźnienie
128K przy niskiej głębokości kolejki Efektywność dużych żądań Porównanie IOPS bezpośrednio z 4K
Buforowane losowe odczyty Wydajność pamięci i ścieżki oprogramowania Przypisywanie wyniku do nośnika pamięci

Najczęściej zadawane pytania

Czy wyższa głębokość kolejki zawsze jest lepsza?

Nie. Może poprawić łączną przepustowość do momentu nasycenia ścieżki pamięci masowej, ale żądania mogą dłużej czekać, a opóźnienia interaktywne mogą się pogorszyć.

Dlaczego często podaje się wyniki losowego odczytu 4K?

Małe bloki przypominają strony bazy danych, metadane i stan aplikacji, ujawniając narzut na operację, który ukrywają duże transfery sekwencyjne.

Czy test wydajności NAS powinien używać QD32?

Tylko wtedy, gdy oczekiwane obciążenie może wygenerować tak dużą równoległość I/O. Uwzględnij QD1 i umiarkowane głębokości dla interaktywnych aplikacji serwera domowego.

Czy opóźnienie sieci może dominować w teście losowego odczytu?

Tak. Rundy SMB lub NFS, przetwarzanie po stronie klienta, szyfrowanie i kolejki przełączników mogą przekraczać czas obsługi urządzenia, zwłaszcza przy niskiej głębokości kolejki.

Ostateczne wnioski

Głębokość kolejki określa, ile operacji I/O może czekać lub być wykonywanych równolegle, podczas gdy rozmiar bloku określa, ile danych przesyła każda operacja. Wyższa głębokość kolejki może zwiększyć całkowitą liczbę IOPS, jednocześnie zwiększając opóźnienie na żądanie, a większe bloki mogą poprawić przepustowość, zmniejszając liczbę operacji. Przydatny test wydajności domowego NAS powinien odzwierciedlać rzeczywistą współbieżność, rozmiary danych, stan pamięci podręcznej oraz wymagania dotyczące opóźnień ogona, zamiast wybierać największą liczbę nagłówkową.

Centrum Technologii i Sztucznej Inteligencji

Więcej do przeczytania

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.