Co jest nie tak z moją prędkością w 4K? Dlaczego jest taki wolny? A może tak ma być?
Czy ta prędkość jest w porządku? Dlaczego mam tak niską prędkość w 4K?
Co jest nie tak z moją prędkością w 4K? Dlaczego jest taki wolny? A może tak ma być?
Czy ta prędkość jest w porządku? Dlaczego mam tak niską prędkość w 4K?
Odpowiedzi:
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 ).
Istnieją zasadniczo dwa różne sposoby dostępu do pliku.
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 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”
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.
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.
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).
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.
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 ...
Notice how it needs to look for every single byte?
zamienić byte
z 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)
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:
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
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.
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.
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.)