Dlaczego dysk SSD NVMe zwalnia podczas tworzenia kopii zapasowych wielu małych plików, ale nie podczas jednego dużego kopiowania lokalnego?

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.

Dysk SSD NVMe może zwalniać podczas tworzenia kopii zapasowych małych plików, ponieważ metadane, losowe zapisy, bariery synchronizacji i obciążenie procesora powodują powstanie innego wąskiego gardła niż podczas kopiowania jednego dużego pliku.

Słowo „throttling” jest często używane w odniesieniu do każdego spadku prędkości, ale throttling termiczny to tylko jedna z możliwości. Zadania tworzenia kopii zapasowych małych plików wielokrotnie tworzą wpisy katalogów, aktualizują znaczniki czasu i uprawnienia, otwierają i zamykają pliki, obliczają sumy kontrolne, kompresują lub szyfrują dane oraz zatwierdzają metadane. Dysk NVMe może wykazywać niższą wartość MB/s, jednocześnie przetwarzając więcej operacji na sekundę i charakteryzując się wyższymi opóźnieniami. Przed zmianą chłodzenia lub wymianą dysku porównaj lokalne obciążenia o takim samym rozmiarze.

Udowodnij różnicę za pomocą lokalnych testów o takim samym rozmiarze

Utwórz jeden duży plik oraz drzewo katalogów z małymi plikami o tej samej łącznej wielkości danych. Skopiuj oba zestawy lokalnie do tego samego miejsca docelowego na dysku NVMe, rejestrując czas, liczbę operacji wejścia/wyjścia na sekundę, opóźnienia, użycie procesora i temperaturę.

Fio definiuje osobne tryby sekwencyjnych i losowych operacji wejścia/wyjścia, dzięki czemu test pozwala odizolować charakter obciążenia zamiast porównywać niezwiązane ze sobą przebiegi tworzenia kopii zapasowych.

Jeśli duże lokalne kopiowanie pozostaje szybkie, a tworzenie małych plików zwalnia, prawdopodobnie dostępne są połączenie PCIe i sekwencyjna ścieżka NAND. Następnie sprawdź metadane, opóźnienia kolejki, pamięć podręczną, procesor i temperaturę.

Mierz operacje na metadanych, a nie tylko MB/s

Monitoruj liczbę plików na sekundę, operacje tworzenia, zamykania i zmiany nazw, aktualizacje katalogów, zapisy list kontroli dostępu, atrybuty rozszerzone oraz operacje synchronizacji. Porównaj te wartości z przepustowością danych.

Firma Red Hat opisuje pamięć masową obsługującą małe pliki jako intensywnie wykorzystującą metadane, wyjaśniając, dlaczego tysiące małych plików mogą generować niską wartość MB/s bez osiągania limitu sekwencyjnej przepustowości dysku NVMe.

Kopia zapasowa może więc działać intensywnie i prawidłowo, mimo wyświetlania rozczarowującej szybkości przesyłania danych. Oceniaj ją na podstawie liczby ukończonych plików, opóźnień i wymagań dotyczących przywracania, a także przepustowości.

Sprawdź, czy czyszczenie pamięci podręcznej zwiększa opóźnienia zapisu

Zapisuj ilość wolnego miejsca, liczbę zapisanych bajtów, utrzymujące się opóźnienia oraz to, czy wydajność poprawia się po okresie bezczynności. Porównuj świeżo przycięty obszar testowy ze standardowym miejscem docelowym kopii zapasowej tylko wtedy, gdy jest to bezpieczne.

Firma Crucial wyjaśnia, że aktywne wyrzucanie śmieci może wpływać na szybkość dysku SSD, szczególnie gdy urządzenie ma niewiele czasu bezczynności lub dostępnego miejsca do ponownego wykorzystania.

Małe losowe zapisy mogą wymagać większej ilości wewnętrznych operacji niż jeden strumień sekwencyjny. Zachowaj zapas wolnego miejsca i nie zakładaj, że deklarowana prędkość sekwencyjna dotyczy również ciągłych zapisów małych plików.

-15% OFF

Sprawdź opóźnienia kolejki i nasycenie urządzenia

Podczas obu testów rejestruj średnie opóźnienie żądań, głębokość kolejki, wykorzystanie urządzenia, szybkości odczytu i zapisu oraz czas oczekiwania procesora na operacje wejścia/wyjścia. Zwróć uwagę na wysokie opóźnienia przy umiarkowanej wartości MB/s.

Raport iostat pomaga wykazać, kiedy urządzenie jest nasycone wieloma małymi żądaniami, mimo że łączna przepustowość pozostaje znacznie niższa od specyfikacji sekwencyjnych.

Zwiększenie współbieżności kopii zapasowej może poprawić wydajność słabo obciążonego urządzenia, ale pogorszyć ją w przypadku już nasyconej kolejki. Zmieniaj jednocześnie tylko jedno ustawienie liczby procesów roboczych lub kolejki.

Oddziel rekordy systemu plików od danych plików

Ustal systemy plików źródłowego i docelowego oraz metadane zachowywane przez kopię zapasową. W systemie NTFS rejestruj przyrost MFT i sprawdzaj, czy kopiowane są deskryptory zabezpieczeń, strumienie alternatywne oraz znaczniki czasu.

Firma Microsoft podaje, że MFT zawiera co najmniej jeden rekord dla każdego pliku, co pokazuje, dlaczego wiele małych plików generuje znacznie więcej pracy związanej z rekordami systemu plików niż jeden plik o tej samej łącznej wielkości.

Jeśli kopia zapasowa zachowuje listy kontroli dostępu, atrybuty rozszerzone, zakresy rzadkie lub sumy kontrolne, uwzględnij tę pracę w porównaniu. Wyłączanie funkcji integralności wyłącznie w celu poprawy wyniku testu porównawczego może osłabić kopię zapasową.

Potwierdź rzeczywisty throttling termiczny zamiast go zakładać

Rejestruj temperaturę złożoną dysku NVMe, czas ostrzeżeń termicznych, czas zajętości kontrolera oraz wydajność przed i po poprawie chłodzenia. Powtórz test przy stabilnym przepływie powietrza i z tym samym zestawem małych plików.

Firma Kingston wyjaśnia, że throttling termiczny zmniejsza wydajność, dopóki dysk SSD nie powróci do bezpiecznej temperatury.

Jeśli przepustowość spada bez osiągnięcia progu temperatury i bez ostrzeżenia termicznego, określ to jako wąskie gardło obciążenia, a nie throttling termiczny. Chłodzenie nie rozwiąże serializacji metadanych ani obliczania skrótów ograniczonego wydajnością procesora.

Optymalizuj warstwę kopii zapasowej, która faktycznie jest nasycona

Przetestuj niewielką zmianę, taką jak zmniejszenie liczby procesów obliczających sumy kontrolne, dodanie jednego procesu kopiowania, grupowanie operacji na metadanych, użycie lokalnego manifestu lub wykluczenie odtwarzalnych pamięci podręcznych. Zachowaj metadane niezbędne do przywracania.

Artykuł ZimaSpace dotyczący testowania kopiowania małych plików przez SMB omawia kopie sieciowe; ten artykuł izoluje lokalny dysk NVMe i potok kopii zapasowej, gdy duże lokalne kopiowanie pozostaje szybkie.

Diagnoza jest kompletna, gdy spowolnienie można przypisać szybkości operacji na metadanych, opóźnieniom losowego zapisu, czyszczeniu pamięci podręcznej, pracy procesora lub potwierdzonemu throttlingowi termicznemu, a ukierunkowana zmiana poprawia wyniki tego samego kontrolowanego testu z małymi plikami.

Wsparcie i wskazówki

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.