Dlaczego mój dysk twardy jest tak wolny w testach prędkości „4K”?

46

Co jest nie tak z moją prędkością w 4K? Dlaczego jest taki wolny? A może tak ma być?

Zrzut ekranu z testu porównawczego

Czy ta prędkość jest w porządku? Dlaczego mam tak niską prędkość w 4K?

Użytkownik6539
źródło
13
To normalne i oczekiwane. „4K” w tym kontekście oznacza losowy odczyt / zapis (w blokach po 4 kilobajty, stąd „4K”), na których strasznie działają mechaniczne dyski twarde. Właśnie tam chcesz mieć dysk SSD. Zobacz tutaj, aby uzyskać bardziej szczegółowe wyjaśnienie.
Bob
4Kb jest używany, ponieważ jest to typowy rozmiar klastra dysków i wielu współczesnych dysków twardych rzeczywistego sektora (struktura niskiego poziomu na samym dysku). Oznacza to, że najmniejsza ilość danych może zostać przesłana jednocześnie w dowolnym odczycie lub zapisie, nawet jeśli żądane dane są mniejsze. Ciekawe, że ŻADNA odpowiedź na tej stronie nie wspomina nawet o klastrach lub sektorach.
thomasrutter
2
@thomasrutter Ponieważ nie ma to znaczenia dla odpowiedzi. Ważną częścią jest to, że test ten obejmuje losowe wyszukiwanie. Nie ma znaczenia (do pewnego stopnia), ile danych jest przesyłanych i czy jest to wielokrotność rozmiaru sektora dysku; ważną częścią jest to, że test przenosi minimalną ilość danych w celu zmierzenia wydajności wyszukiwania.
Micheal Johnson,
Czy ten test jest na partycji, czy na całym dysku? Testy na poziomie partycji mogą działać znacznie gorzej w przypadku dostępu do 4K, jeśli masz dysk z sektorami fizycznymi 4K, ale sektorami logicznymi 1K, i nie wyrównujesz granicy partycji do sektorów rozproszonych.
Toby Speight,
Nowoczesne narzędzia do partycjonowania zwykle zapewniają, że partycje zaczynają się i kończą na granicy sektora; nawet ziarnistość 1 MB jest teraz powszechna. Dawno minęły czasy starych „63 512-bajtowych sektorów”, które spowodowałyby problemy dla rodzimych sektorów 4Kb.
thomasrutter,

Odpowiedzi:

85

To, na co się napotykasz, jest typowe dla mechanicznych dysków twardych i jedną z głównych zalet dysków SSD: dyski twarde mają straszną wydajność dostępu losowego.

W CrystalDiskMark „Seq” oznacza dostęp sekwencyjny, podczas gdy „4K” oznacza dostęp losowy (w porcjach po 4kB, ponieważ pojedyncze bajty byłyby o wiele za wolne i nierealne 1 ).


Definicje

Istnieją zasadniczo dwa różne sposoby dostępu do pliku.

Dostęp sekwencyjny

Dostęp sekwencyjny oznacza, że ​​czytasz lub zapisujesz plik mniej więcej jeden bajt po drugim. Na przykład, jeśli oglądasz film, ładowałbyś go od początku do końca. Jeśli pobierasz plik, jest on pobierany i zapisywany na dysku od początku do końca.

Z perspektywy dysku widzi polecenia takie jak „odczyt bloku 1, odczyt bloku 2, odczyt bloku 3, odczyt bajtu bloku 4” 1 .

Losowy dostęp

Losowy dostęp oznacza, że ​​nie ma oczywistego wzorca odczytów lub zapisów. Nie musi to oznaczać naprawdę przypadkowego; to naprawdę oznacza „niesekwencyjny”. Na przykład, jeśli uruchamiasz wiele programów naraz, będą musiały odczytać wiele plików rozrzuconych na twoim dysku.

Z perspektywy napędu widać polecenia takie jak „odczyt bloku 56, odczyt bloku 5463, odczyt bloku 14, odczyt bloku 5”

Bloki

Kilka razy wspominałem o blokach. Ponieważ komputery radzą sobie z tak dużymi rozmiarami (1 MB ~ = 1000000 B), nawet dostęp sekwencyjny jest nieefektywny, jeśli trzeba poprosić dysk o każdy pojedynczy bajt - jest za dużo gadania. W praktyce system operacyjny żąda jednocześnie bloków danych z dysku.

Bloku znajduje się szereg bajtów; na przykład blok nr 1 może być bajtami nr 1- 512, blok nr 2 może być bajtem nr 513– 1024, itd. Bloki te mają albo 512 bajtów, albo 4096 bajtów dużych, w zależności od napędu. Ale nawet po zajęciu się blokami, a nie pojedynczymi bajtami, sekwencyjny dostęp do bloku jest szybszy niż losowy dostęp do bloku.


Występ

Sekwencyjny

Dostęp sekwencyjny jest zazwyczaj szybszy niż dostęp losowy. Wynika to z faktu, że sekwencyjny dostęp pozwala systemowi operacyjnemu i napędowi przewidzieć, co będzie dalej potrzebne, i z góry załadować dużą porcję. Jeśli poprosiłeś o bloki „1, 2, 3, 4”, system operacyjny może zgadnąć, że będziesz potrzebować „5, 6, 7, 8”, więc mówi napędowi, by przeczytał „1, 2, 3, 4” , 5, 6, 7, 8 "za jednym razem. Podobnie dysk może odczytywać pamięć fizyczną za jednym razem, zamiast „szukać 1, czytać 1,2,3,4, szukać 5, czytać 5,6,7,8”.

Och, wspominałem o poszukiwaniu czegoś. Mechaniczne dyski twarde mają bardzo powolny czas wyszukiwania ze względu na ich fizyczny układ: składają się z szeregu ciężkich metalizowanych dysków obracających się dookoła, a fizyczne ramiona poruszają się tam iz powrotem, aby odczytać dysk. Oto wideo z otwartego dysku twardego, na którym widać obracające się dyski i poruszające się ramiona.

Schemat elementów wewnętrznych dysku twardego
Zdjęcie z http://www.realtechs.net/data%20recovery/process2.html

Oznacza to, że w dowolnym momencie można odczytać tylko bit danych pod głową na końcu ramienia. Napęd musi poczekać na dwie rzeczy: musi poczekać, aż ramię przesunie się do prawego pierścienia („ścieżki”) dysku, a także musi zaczekać, aż dysk się obróci, aby potrzebne dane znalazły się pod odczytem głowa. Jest to znane jako szukanie 2 . Zarówno wirujące, jak i ruchome ramiona poruszają się fizycznie i nie można ich przyspieszyć bez ryzyka uszkodzenia.

Zwykle zajmuje to bardzo dużo czasu, znacznie dłużej niż faktyczny odczyt. Mówimy> 5 ms tylko po to, aby dotrzeć do miejsca, w którym mieszka żądany bajt, podczas gdy rzeczywisty odczyt bajtu wynosi średnio około 0,00000625 ms na sekwencyjny odczyt bajtów (lub 0,003125 ms na blok 512 B).

Losowy

Z drugiej strony dostęp losowy nie daje takiej korzyści z przewidywalności. Więc jeśli chcesz odczytać 8 losowych bajtów, być może z bloków „8 344,76,996,112,644,888,341”, dysk musi iść „szukaj do 8, czytaj 8, szukaj do 34, czytaj 34, szukaj to76, czytaj 76, ...” . Zauważ, jak trzeba szukać ponownie dla każdego bloku? Zamiast średnio 0,003125 ms na sekwencyjny blok 512 B, teraz jest to średnio (5 ms wyszukiwania + 0,003125 ms odczytu) = 5,003125 ms na blok. To wiele, wiele razy wolniej. W rzeczywistości tysiące razy wolniej.

Dyski SSD

Na szczęście mamy teraz rozwiązanie: dyski SSD.

SSD, o dysk SSD , jest, jak sama nazwa wskazuje, stan solidne . Oznacza to, że nie ma ruchomych części . Co więcej, sposób, w jaki ułożono dysk SSD, oznacza (skutecznie 3 ), że nie ma potrzeby sprawdzania lokalizacji bajtu; już to wie . Właśnie dlatego dysk SSD ma znacznie mniejszą lukę w wydajności między dostępem sekwencyjnym i losowym.

Nadal istnieje luka, ale można to w dużej mierze przypisać temu, że nie można przewidzieć, co będzie dalej, i wstępnie załadować te dane, zanim zostaną o to poproszone.


1 Dokładniej, dzięki LBA dyski są adresowane w blokach 512 bajtów (512n / 512e) lub 4kB (4Kn) ze względu na wydajność. Ponadto rzeczywiste programy prawie nigdy nie potrzebują pojedynczego bajtu na raz.

2 Technicznie rzecz biorąc, poszukiwanie odnosi się tylko do ruchu ramienia. Oczekiwanie na obrót danych pod głową to opóźnienie rotacji w stosunku do czasu wyszukiwania.

3 Technicznie mają tabele przeglądowe i odwzorowują z innych powodów, np. Wyrównywania zużycia, ale są one całkowicie nieistotne w porównaniu do HDD ...

Kok
źródło
@KamilMaciorowski Właściwie zastanawiam się teraz nad tym uproszczeniem, ponieważ odrzuca ono moje obliczenia czasu poszukiwania + odczytu. No cóż. Nie jest to zbyt ważne dla koncepcji.
Bob
Należy skorygować losową część: Notice how it needs to look for every single byte?zamienić bytez block(i zmienić exemple odpowiednio). Napęd poszukuje części 4k (która może być dalej rozproszona na porcję 512 bajtów, ale nie mniej niż to. Nie szuka między każdym bajtem! Szuka między każdym blokiem, jeśli następny blok nie jest tuż za (co zdarza się często na rozdrobnione dyski). A szukanie (poruszanie głową wokół talerza i czekanie, aż blok przejdzie pod nim) zajmuje bardzo długo (kilka milisekund)
Olivier Dulac
2
Mały dienote do 4 kiB / 512B. 4kiB ma również rozmiar strony, cóż, prawie wszystko, więc OS $ prawdopodobnie przejdzie pełny blok 4 kiB, nawet jeśli sterowniki LBA będą czytać w 512 fragmentach B. Nie sądzę też, aby problem polegał na tym, że HDD musi „znaleźć” dowolny bajt bardziej niż SDD niż to, że musi fizycznie obrócić się do właściwej pozycji. Jeśli ponownie uzyskasz dostęp do bloku, musisz poszukać go ponownie, ponieważ dysk twardy obraca się nieprzerwanie. Każde ponowne mapowanie bloku będzie prawdopodobnie efektem wtórnym (a ponownie mapowany blok jest zwykle zaraz po uszkodzeniu, ale moim zdaniem, aby zminimalizować wyszukiwanie).
Maciej Piechotka,
(Być może kompletna uwaga dodatkowa - nie jestem pewien co do NAND / NOR, ale przynajmniej adresowanie DDR również nie jest całkowicie losowe, jak wskazuje nazwa, ale działa w „rozerwaniu” adresów. W większości przypadków jest to 64 B ze względu na to, że jest wielkość linii $ większości procesorów, ale może być znacznie większa dla innych aplikacji.)
Maciej Piechotka,
1
@OlivierDulac Nadal uważam, że wprowadzanie bloków jest potencjalnie mylące, ale próbowałem to wyjaśnić. Odpowiedź zaktualizowana.
Bob
3

Jak już wskazano w innych odpowiedziach, „4K” prawie na pewno odnosi się do losowego dostępu w blokach KiB o rozmiarze 4.

Za każdym razem, gdy dysk twardy (nie SSD) jest proszony o odczyt lub zapis danych, występują dwa znaczące opóźnienia:

  • Szukaj opóźnienia, aby głowica odczytu / zapisu „przeszukała” prawidłową ścieżkę kołową (lub „cylinder”) na talerzu, w tym czas potrzebny na ustabilizowanie się głowicy na ścieżce i synchronizację z danymi przechowywanymi na talerzu
  • Opóźnienie obrotowe dla obracającego się talerza pod głowicą odczytu / zapisu w celu obrotu w taki sposób, że żądana część ścieżki („sektor”) przechodzi pod głowicą

Oba mają względnie stały czas dla każdego dysku. Opóźnienie szukania jest funkcją tego, jak szybko można przesunąć głowę i jak daleko trzeba ją przesunąć, a opóźnienie obrotowe jest funkcją tego, jak szybko obraca się talerz. Co więcej, niewiele się zmieniły w ciągu ostatnich kilku dekad. Producenci faktycznie wykorzystywali średni czas wyszukiwania, np. W reklamach; prawie przestali to robić, gdy w okolicy było niewiele lub nie było żadnego rozwoju. Żaden producent, szczególnie w środowisku wysokiej konkurencji, nie chce, aby ich produkty wyglądały nie lepiej niż produkty konkurencji.

Typowy dysk twardy komputera stacjonarnego obraca się z prędkością 7200 obr./min, podczas gdy typowy dysk laptopa może obracać się z prędkością około 5000 obr./min. Oznacza to, że co sekundę przechodzi w sumie 120 obrotów (dysk stacjonarny) lub około 83 obrotów (dysk laptop). Ponieważ średnio dysk musi obrócić pół obrotu, zanim żądany sektor przejdzie pod głowę, oznacza to, że możemy oczekiwać, że dysk będzie w stanie obsłużyć około dwa razy tyle żądań We / Wy na sekundę, zakładając, że

  • albo wyszukiwanie jest wykonywane, gdy dysk się obraca (jest to dziś prawdopodobnie bezpieczny zakład dla dysków twardych, na których I / O wymaga wyszukiwania), a opóźnienie wyszukiwania nie jest dłuższe niż opóźnienie rotacji dla określonego I / O
  • lub głowica znajduje się już nad właściwym cylindrem, co powoduje , że napęd nie musi szukać (co jest szczególnym przypadkiem powyżej, z opóźnieniem wyszukiwania równym zero)

Powinniśmy więc oczekiwać, że będziemy w stanie wykonać rzędu 200 operacji we / wy na sekundę, jeśli dane, o które proszony jest o dostęp (do odczytu lub zapisu), są względnie zlokalizowane fizycznie, co powoduje, że czynnikiem ograniczającym jest opóźnienie rotacji. W ogólnym przypadku spodziewalibyśmy się, że dysk będzie w stanie działać z prędkością 100 operacji we / wy na sekundę, jeśli dane zostaną rozłożone na talerzu lub talerzach, co wymaga znacznego wyszukiwania i powoduje, że opóźnienie wyszukiwania jest czynnikiem ograniczającym . Pod względem miejsca przechowywania jest to „ IOPSwydajność "dysku twardego; ta, a nie sekwencyjna wydajność we / wy, jest zazwyczaj czynnikiem ograniczającym w rzeczywistych systemach pamięci masowej. (Jest to duży powód, dla którego dyski SSD są znacznie szybsze w użyciu: eliminują opóźnienia obrotowe i znacznie zmniejszają opóźnienie wyszukiwania, ponieważ ruch fizyczny głowicy odczytu / zapisu staje się wyszukiwaniem tabeli w tabelach warstw mapowania flash, które są przechowywane elektronicznie).

Zapisy są zwykle wolniejsze, gdy występuje opróżnianie pamięci podręcznej. Zwykle systemy operacyjne i dyski twarde próbują zmienić kolejność losowych zapisów, aby w miarę możliwości zamienić losowe operacje we / wy w sekwencyjne operacje we / wy, aby poprawić wydajność. Jeśli istnieje wyraźna bariera opróżniania pamięci podręcznej lub bariera zapisu , ta optymalizacja jest eliminowana w celu zapewnienia, że ​​stan danych w trwałym magazynie jest zgodny z oczekiwaniami oprogramowania. Zasadniczo to samo rozumowanie ma zastosowanie podczas odczytu, gdy nie jest zaangażowana pamięć podręczna dysku, albo dlatego, że nie istnieje (nie jest to dzisiaj powszechne w systemach typu komputerowego), albo dlatego, że oprogramowanie celowo go omija (co często się dzieje podczas pomiaru wydajności We / Wy). Oba zmniejszają maksymalną potencjalną wydajność IOPS do bardziej pesymistycznego przypadku lub 120 IOPS dla napędu o prędkości 7200 obr / min.

  • Przy 100 IOPS przy 4 KiB na I / O uzyskujemy wydajność około 400 KB / s.
  • Przy 200 IOPS przy 4 KiB na I / O osiągamy wydajność około 800 KB / s.

Które akurat pasują do twoich liczb prawie dokładnie. Losowe operacje we / wy przy małych rozmiarach bloków są absolutnym zabójcą wydajności dla obrotowych dysków twardych, dlatego też jest to odpowiednia miara.

Jeśli chodzi o czysto sekwencyjne operacje we / wy, przepustowość w zakresie 150 MB / s wcale nie jest nieuzasadniona w przypadku nowoczesnych obrotowych dysków twardych. Ale bardzo niewiele rzeczywistych operacji we / wy jest ściśle sekwencyjnych, więc w większości sytuacji czysto sekwencyjna wydajność operacji we / wy staje się bardziej akademickim ćwiczeniem niż wskazaniem rzeczywistej wydajności.

CVn
źródło
To świetna odpowiedź i czyta o wiele lepiej niż moja :) Tylko mała uwaga, przynajmniej Seagate wciąż podaje średnie opóźnienie wyszukiwania w swoich arkuszach danych . WD nie wydaje się.
Bob
@ Bob Dziękuję. Miałem na myśli reklamy i podobne; Zredagowałem odpowiedź, aby to wyjaśnić. Myślę, że można śmiało powiedzieć, że bardzo niewiele osób czyta karty danych, nawet jeśli byłoby to prawdopodobnie trzeźwiące doświadczenie dla wielu ...
CVn
2

4K dotyczy losowo I / O . Oznacza to, że dysk jest proszony o dostęp do małych bloków (rozmiar 4 KB) w losowych punktach w pliku testowym. Jest to słabość dysków twardych; możliwość dostępu do danych w różnych regionach dysku jest ograniczona szybkością, z jaką dysk się obraca oraz szybkością ruchów głowic odczytu i zapisu. Sekwencyjne operacje we / wy , do których uzyskuje się dostęp do kolejnych bloków, są znacznie łatwiejsze, ponieważ napęd może po prostu czytać lub zapisywać bloki podczas obracania się dysku.

Dysk półprzewodnikowy (SSD) nie ma takiego problemu z losowymi wejściami / wyjściami, ponieważ wszystko, co musi zrobić, to sprawdzić, gdzie dane są przechowywane w pamięci podstawowej (zwykle pamięć flash NAND, może być 3D XPoint lub nawet DRAM) i odczytać lub wpisz dane w odpowiednim miejscu. Dyski SSD są całkowicie elektroniczne i nie muszą czekać na obracającym się dysku lub ruchomej głowicy odczytu / zapisu, aby uzyskać dostęp do danych, co czyni je znacznie szybszymi niż dyski twarde pod tym względem. Z tego powodu uaktualnienie do SSD radykalnie zwiększa wydajność systemu.

Uwaga dodatkowa: wydajność sekwencyjnego We / Wy na dysku SSD jest często znacznie wyższa niż na dysku twardym. Typowy dysk SSD ma kilka układów NAND podłączonych równolegle do kontrolera pamięci flash i może uzyskać do nich dostęp jednocześnie. Dzięki rozłożeniu danych na te układy uzyskuje się układ dysku podobny do RAID 0, co znacznie zwiększa wydajność. (Należy pamiętać, że wiele nowszych napędów, szczególnie tańszych, korzysta z rodzaju NAND o nazwie TLC NAND, który zwykle jest powolny podczas zapisywania danych. Dyski z TLC NAND często używają małego bufora szybszego NAND, aby zapewnić wyższą wydajność dla mniejszych operacji zapisu, ale mogą gwałtownie zwolnij, gdy bufor się zapełni.)

bwDraco
źródło
IIRC, niektóre dyski SSD NVMe używają nawet pamięci podręcznej DRAM.
timuzhti,
1
Większość robi. Dyski SSD Dramless są trochę w niskiej cenie.
Journeyman Geek