NVMe ssd: Dlaczego zapisywanie 4k jest szybsze niż czytanie?


51

Mam dysk SSD Samsung 960 Pro 512 GB na NVMe z uruchomionym PCIe Gen.3x4. Używam sterownika Samsung NVMe 2.0.0.1607. Dysk SSD działa poprawnie. Nie rozumiem jednak, dlaczego pisanie 4k jest szybsze niż czytanie 4k. Używam AS Benchmark:

wprowadź opis zdjęcia tutaj

To współczynnik 3! Czy coś jest nie tak (z moim systemem lub testem AS), czy jest to normalne?


I wciąż o wiele szybszy niż obrotowy dysk twardy!
Zan Lynx,

Odpowiedzi:


76

Odczyty 4k będą najtrudniejszą rzeczą, jaką może zrobić dysk. Są to jedne z najmniejszych rozmiarów bloków, które dysk będzie w stanie obsłużyć, i nie ma możliwości, aby dysk wstępnie załadował duże ilości danych, w rzeczywistości są one prawdopodobnie dość nieefektywne, jeśli logika ładowania z wyprzedzeniem zamierza cokolwiek odczytać większy niż 4kb.

„Normalne” odczyty dysku są większe niż 4 KB, ponieważ istnieje bardzo niewiele plików, które są tak małe, a nawet plik strony może być czytany w dużych fragmentach, ponieważ byłoby dziwne, gdyby program miał „tylko” Przetestowano 4KB pamięci. Oznacza to, że każde wstępne ładowanie, które próbuje wykonać dysk, w rzeczywistości spowoduje zmniejszenie przepustowości dysku.

Odczyty 4K mogą przechodzić przez bufor napędu, ale „losowa” część testu czyni je całkowicie nieprzewidywalnymi. Kontroler nie będzie wiedział, kiedy dysk może potrzebować więcej zwykłych „dużych” odczytów.

Z drugiej strony zapisy 4K można efektywnie buforować, kolejkować i zapisywać sekwencyjnie. Bufor dysku może wykonać wiele pracy polegającej na przechwytywaniu i zapisywaniu, do której został zaprojektowany, a funkcja wyrównania zużycia może nawet przydzielić wszystkie zapisy 4K do tego samego bloku wymazywania dysku, od czasu do czasu przekształcając zapis „losowy” 4K w zapis coś bliższego do sekwencyjnego zapisu.

Podejrzewam, że tak właśnie dzieje się w zapisie „4K-64Thrd”, „64-Thrd” najwyraźniej używa dużej głębokości kolejki , sygnalizując w ten sposób napędowi, że ma dużą ilość danych do odczytu lub zapisu . To powoduje wiele klastrów zapisów, a więc zbliża się do prędkości sekwencyjnego zapisu napędu. Nadal wykonuje się zapis w 4K, ale teraz w pełni ujawniasz potencjał bufora. W wersji testowej Read kontroler napędu, rozpoznając teraz, że jest pod bardzo stałym dużym obciążeniem, zatrzymuje wstępne ładowanie danych, prawdopodobnie omija bufor i zamiast tego przełącza się na „nieprzetworzony” tryb odczytu, ponownie zbliżając się do prędkości odczytu sekwencyjnego.

Zasadniczo kontroler napędu może zrobić coś, aby uczynić zapis 4K bardziej wydajnym, szczególnie jeśli klaster z nich dotrze w tym samym czasie, podczas gdy nie może nic zrobić, aby uczynić odczyt pojedynczego 4K bardziej wydajnym, szczególnie jeśli próbuje zoptymalizować przepływ danych przez wstępne ładowanie danych do pamięci podręcznej.


5
Nie jest to część samej odpowiedzi, ale podejrzewam, że „odczyt 4K” (wersja nie 64Thrd) faktycznie ujawnia domyślny rozmiar bloku odczytu dysku jako 32 KB lub 64 KB. Może to być albo 2600/50 = 52 (64K z pewnym narzutem + oryginalny odczyt 4K) lub 1200/50 = 24 (32K z pewnym narzutem + odczyt 4K zmniejszający go).
Mokubai

16
Dobra odpowiedź ogólnie, ale nie wierzę, że „jest bardzo mało plików, które są tak małe”. Podejrzewam, że w większości systemów większość plików ma rozmiar 4 KB lub mniejszy. Nie zajmują większości miejsca , ale to inna sprawa.
hobbs

3
Najprostsza odpowiedź jest prawdopodobnie następująca: jeśli wykonujesz je pojedynczo, nie możesz w ogóle nakładać się na odczyty, ponieważ nawet nie wiesz, dla jakiego bloku jest następny odczyt, dopóki nie zwrócisz danych z poprzedniego odczytu. Ale możesz całkowicie nakładać się na zapisy, ponieważ możesz uzyskać wszystkie dane do następnego zapisu, gdy nadal pracujesz nad poprzednim.
David Schwartz

2
@ Hobbs Jeśli weźmiesz na przykład NTFS, domyślny rozmiar klastra to 4K (lub jego wielokrotność), co oznacza, że ​​sam system plików NTFS działa w blokach 4K, mimo że same pliki i / lub metadane są mniejsze. Tak więc mniejsze pliki nie mają znaczenia. Do wszystkich celów i celów system Windows odczytuje / zapisuje w blokach 4K lub ich wielokrotnościach.
Tonny

1
@ Hobbs: Dzięki NTFS prawdopodobnie będziesz mógł czytać takie małe pliki za darmo (!). Małe pliki są przechowywane w samym wpisie katalogu obok nazwy pliku. Musisz mieć dość konkretny rozmiar pliku zbliżony do 4KB, aby mieć rzeczywisty plik 4KB na dysku.
MSalters

16

Inne odpowiedzi wyjaśniły już, dlaczego pisanie jest szybsze niż czytanie; Chciałbym dodać, że dla tego napędu jest to absolutnie normalne, co potwierdzają testy porównawcze, które można znaleźć w recenzjach.

Recenzja ArsTecnica

ArsTechnica sprawdził dysk, zarówno twoją wersję (512 GB), jak i 2 TB:

ArsTechnica (Ten wykres nie jest od razu widoczny w recenzji, jest to piąty w pierwszej galerii, musisz go kliknąć)

Wydajność tych 2 modeli jest bardzo podobna, a ich liczby wyglądają jak twoje: dysk może odczytywać z prędkością 37 MB / si zapisywać z prędkością 151 MB / s.

Recenzja AnandTech

AnandTech dokonał również przeglądu napędu: użyli modelu 2 TB, uśredniając wyniki testów przy głębokości kolejki 1, 2 i 4. Oto wykresy:

Odczyt AnandTech 4K Zapis AnandTech 4K

Dysk odczytuje z prędkością 137 MB / si zapisuje z prędkością 437 MB / s. Liczba jest znacznie wyższa niż twoja, ale prawdopodobnie wynika to z większej głębokości kolejki. W każdym razie prędkość zapisu jest 3 razy większa niż prędkość odczytu, jak w twoim przypadku.

Recenzja PC World

Jeszcze jedna recenzja, autorstwa PC World : przetestowali wersję 1 TB, a wyniki dla 4K wynoszą 30 MB / s do odczytu i 155 MB / s do zapisu: Wykres PC World prędkość zapisu jest zgodna z twoją, ale tutaj dysk jest nawet wolniej w czytaniu. W rezultacie stosunek wynosi pięć do jednego, a nie trzy do jednego.

Wniosek

Recenzje potwierdzają, że dla tego napędu normalne jest, że prędkość zapisu losowego 4K jest znacznie większa niż prędkość odczytu: w zależności od testu może być nawet 5 razy szybsza.

Twój dysk jest w porządku. Nie ma powodu, aby sądzić, że jest uszkodzony lub że twój system ma problem.


8

Kontroler SSD buforuje zapisy we wbudowanej pamięci NVRAM i wypłukuje ją na nośniki flash we właściwym czasie. Opóźnienie zapisu jest zatem opóźnieniem dostępu do pamięci podręcznej, zwykle 20us. Przeciwnie, odczyty są podawane z mediów, w najlepszym wypadku czas dostępu wynosi 120-150us.


1

Rozwijając odpowiedź Andreya, musisz spojrzeć na koszty ogólne, zanim dysk SSD może zasygnalizować komputerowi, że operacja została zakończona.

W przypadku zapisu dane muszą być po prostu zapisane w wewnętrznej pamięci podręcznej RAM. Później zostanie zapisany w pamięci flash, wraz z innymi blokami 4k i metadanymi potrzebnymi do sprawdzenia, poprawienia błędu i zlokalizowania go.

Aby odczytać, dysk SSD musi najpierw zlokalizować dane. Lokalizacja, którą komputer chce odczytać, nazywa się adresem logicznym i nie ma bezpośredniego związku z fizyczną lokalizacją danych w pamięci flash. Dysk SSD przekształca adres logiczny na fizyczny w oparciu o geometrię pamięci flash (sposób rozmieszczenia komórek), ponowne mapowanie błędnego bloku, wyrównanie zużycia i różne inne czynniki. Następnie musi poczekać na zakończenie wszelkich innych operacji, zanim pobierze dane z pamięci flash, a następnie sprawdzi je i, jeśli to konieczne, ponownie przeczyta i zastosuje korekcję błędów, być może nawet ponownie zapisze cały blok gdzie indziej.

Chociaż całkowity czas operacji zapisu może być dłuższy niż typowa operacja odczytu, czas poświęcony SSD na zgłoszenie zakończenia operacji w zakresie, w jakim może przetwarzać dalsze polecenia, jest krótszy. W przypadku dużych bloków narzut nie jest czynnikiem ograniczającym, ale w przypadku wielu małych bloków zaczyna ograniczać prędkość odczytu / zapisu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.