Warum ist meine Festplatte bei den 4K-Geschwindigkeitstests so langsam?

46

Was ist los mit meiner Geschwindigkeit bei 4K? Warum ist es so langsam? Oder soll es so sein?

Screenshot des Benchmarks

Ist die Geschwindigkeit in Ordnung? Warum habe ich so niedrige Geschwindigkeit bei 4K?

User6539
quelle
13
Das ist normal und erwartet. "4K" bedeutet in diesem Zusammenhang zufälliges Lesen / Schreiben (in Blöcken von 4 Kilobyte, daher "4K"), mit dem mechanische Festplatten eine schreckliche Leistung erbringen. Hier möchten Sie eine SSD. Weitere Informationen finden Sie hier .
Bob
4 KB werden verwendet, weil es die typische Größe eines Festplattenclusters und auf vielen modernen Festplatten des tatsächlichen Sektors (die Struktur auf niedriger Ebene auf der Festplatte selbst) hat. Das heißt, die kleinste Datenmenge, die wahrscheinlich zu einem Zeitpunkt beim Lesen oder Schreiben übertragen wird, selbst wenn die angeforderten Daten kleiner sind. Interessant, dass NO auf dieser Seite bisher sogar Cluster oder Sektoren erwähnt.
Thomasrutter
2
@ thomasrutter Weil es für die Antwort nicht relevant ist. Der wichtige Teil ist, dass dieser Test eine zufällige Suche beinhaltet. Es ist (bis zu einem gewissen Grad) nicht relevant, wie viele Daten übertragen werden und ob dies ein Vielfaches der Sektorgröße der Festplatte ist oder nicht. Der wichtige Teil ist, dass der Test eine minimale Datenmenge überträgt, um die Suchleistung zu messen.
Micheal Johnson
Befindet sich dieser Test auf einer Partition oder auf der gesamten Festplatte? Tests auf Partitionsebene können bei 4-KByte-Zugriffen wesentlich schlechter ablaufen, wenn Sie eine Festplatte mit 4-KByte-physischen Sektoren, aber 1-KByte-logischen Sektoren haben und die Partitionsgrenze nicht an den Segmentsektoren ausrichten.
Toby Speight
Moderne Partitionierungstools stellen in der Regel sicher, dass Partitionen an einer Sektorgrenze beginnen und enden. Selbst die Granularität von 1 MB ist heute üblich. Vorbei sind die Zeiten der alten "63 512-Byte-Sektoren", die Probleme für native 4-KB-Sektoren verursachen würden.
Thomasrutter

Antworten:

85

Das, worauf Sie stoßen, ist typisch für mechanische Festplatten und einer der Hauptvorteile von SSDs: Festplatten haben eine schreckliche Direktzugriffsleistung.

In CrystalDiskMark bedeutet "Seq" sequentiellen Zugriff, während "4K" zufälligen Zugriff bedeutet (in Blöcken von jeweils 4 KB, da einzelne Bytes viel zu langsam und unrealistisch wären 1 ).


Definitionen

Grundsätzlich gibt es zwei Möglichkeiten, auf eine Datei zuzugreifen.

Sequentieller Zugriff

Sequentieller Zugriff bedeutet, dass Sie die Datei mehr oder weniger byteweise nacheinander lesen oder schreiben. Wenn Sie sich beispielsweise ein Video ansehen, laden Sie das Video von Anfang bis Ende. Wenn Sie eine Datei herunterladen, wird sie von Anfang bis Ende heruntergeladen und auf die Festplatte geschrieben.

Aus Sicht der Festplatte werden Befehle wie "Block 1 lesen, Block 2 lesen, Block 3 lesen, Byte-Block 4 lesen" 1 angezeigt .

Zufälliger Zugriff

Zufallszugriffsmittel gibt es keine offensichtlichen Muster auf das liest oder schreibt. Dies muss nicht wirklich zufällig bedeuten; es bedeutet wirklich "nicht sequentiell". Wenn Sie zum Beispiel viele Programme gleichzeitig starten, müssen diese viele Dateien lesen, die auf Ihrem Laufwerk verstreut sind.

Aus der Sicht des Laufwerks werden Befehle wie "Block # 56 lesen, Block # 5463 lesen, Block # 14 lesen, Block # 5 lesen" angezeigt.

Blöcke

Ich habe einige Male Blöcke erwähnt. Da Computer mit so großen Datenmengen (1 MB ~ = 1000000 B) umgehen, ist selbst der sequenzielle Zugriff ineffizient, wenn Sie das Laufwerk nach jedem einzelnen Byte fragen müssen - es wird zu viel geredet. In der Praxis fordert das Betriebssystem jeweils Datenblöcke von der Festplatte an.

Ein Block ist nur ein Bereich von Bytes. Block Nr. 1 kann beispielsweise aus den Bytes Nr. 1 bis Nr. 512 bestehen, Block Nr. 2 aus den Bytes Nr. 513 bis Nr. 1024 usw. Je nach Laufwerk sind diese Blöcke entweder 512 Bytes oder 4096 Bytes groß. Aber auch nach dem Umgang mit Blöcken und nicht mit einzelnen Bytes ist der sequentielle Blockzugriff schneller als der wahlfreie Blockzugriff.


Performance

Sequentiell

Sequentieller Zugriff ist im Allgemeinen schneller als Direktzugriff. Dies liegt daran, dass das Betriebssystem und das Laufwerk durch sequenziellen Zugriff vorhersagen können, was als Nächstes benötigt wird, und einen großen Teil im Voraus laden können. Wenn Sie die Blöcke "1, 2, 3, 4" angefordert haben, kann das Betriebssystem davon ausgehen, dass Sie als Nächstes "5, 6, 7, 8" möchten, und weist das Laufwerk an, "1, 2, 3, 4" zu lesen , 5, 6, 7, 8 "auf einmal. In ähnlicher Weise kann das Laufwerk den physischen Speicher auf einmal auslesen, anstatt "nach 1 suchen, nach 1,2,3,4 lesen, nach 5 suchen, nach 5,6,7,8 lesen".

Oh, ich habe erwähnt, dass ich etwas suche. Mechanische Festplatten haben aufgrund ihrer physischen Anordnung eine sehr langsame Suchzeit: Sie bestehen aus einer Reihe schwerer metallisierter Festplatten, die sich drehen, und physische Arme bewegen sich vor und zurück, um die Festplatte zu lesen. Hier ist ein Video von einer offenen Festplatte, auf der Sie die sich drehenden Scheiben und bewegenden Arme sehen können.

Diagramm der Festplatteneinbauten
Bild von http://www.realtechs.net/data%20recovery/process2.html

Dies bedeutet, dass zu jedem Zeitpunkt nur das Datenbit unter dem Kopf am Ende des Arms gelesen werden kann. Das Laufwerk muss auf zwei Dinge warten: Es muss warten, bis sich der Arm zum rechten Ring ("Spur") der Festplatte bewegt, und außerdem müssen Sie warten, bis sich die Festplatte dreht, damit die erforderlichen Daten gelesen werden Kopf. Dies wird als Suchen 2 bezeichnet . Sowohl die sich drehenden als auch die sich bewegenden Arme benötigen physische Zeit, um sich zu bewegen, und sie können nicht viel beschleunigt werden, ohne Schaden zu riskieren.

Dies dauert in der Regel sehr lange, weitaus länger als das eigentliche Ablesen. Wir sprechen von> 5 ms, nur um dorthin zu gelangen, wo das angeforderte Byte lebt, während das tatsächliche Lesen des Bytes auf etwa 0,00000625 ms pro gelesenem sequentiellen Byte (oder 0,003125 ms pro 512-B-Block) hinausläuft.

Zufällig

Zufälliger Zugriff hingegen hat nicht den Vorteil der Vorhersehbarkeit. Wenn Sie also 8 zufällige Bytes aus den Blöcken "8,34,76,996,112,644,888,341" lesen möchten, muss das Laufwerk auf "8 suchen, 8 lesen, 34 suchen, 34 lesen, 76 suchen, 76 lesen, ..." gehen. . Beachten Sie, wie es für jeden einzelnen Block erneut suchen muss? Anstelle von durchschnittlich 0,003125 ms pro sequenziellem 512-B-Block ist es jetzt durchschnittlich (5 ms Suche + 0,003125 ms Lesen) = 5,003125 ms pro Block. Das ist um ein Vielfaches langsamer. Tatsächlich Tausende Male langsamer.

SSDs

Zum Glück haben wir jetzt eine Lösung: SSDs.

Eine SSD, ein Solid State Drive , ist, wie der Name schon sagt, festen Zustand . Das heißt, es hat keine beweglichen Teile . Darüber hinaus bedeutet die Anordnung einer SSD, dass (effektiv 3 ) kein Byte gesucht werden muss. es weiß schon . Aus diesem Grund weist eine SSD eine viel geringere Leistungslücke zwischen sequenziellem und wahlfreiem Zugriff auf.

Es gibt immer noch eine Lücke, aber das kann weitgehend darauf zurückgeführt werden, dass man nicht vorhersagen kann, was als nächstes kommt, und dass diese Daten vorab geladen werden , bevor sie angefordert werden.


1 Genauer gesagt werden LBA-Laufwerke aus Effizienzgründen in Blöcken von 512 Byte (512n / 512e) oder 4 KB (4 KB) adressiert. Außerdem benötigen echte Programme fast nie nur ein einziges Byte.

2 Technisch bezieht sich Suche nur auf den Armweg. Das Warten, bis sich die Daten unter dem Kopf drehen, ist die Rotationslatenz zusätzlich zur Suchzeit.

3 Technisch gesehen haben sie Nachschlagetabellen und können aus anderen Gründen neu zugeordnet werden, z. B. um den Verschleiß auszugleichen. Diese sind jedoch im Vergleich zu einer Festplatte völlig zu vernachlässigen.

Bob
quelle
@KamilMaciorowski Diese Vereinfachung überdenke ich gerade, weil sie meine Berechnung der Such- und Lesezeit stört. Naja. Es ist nicht zu wichtig für die Konzepte.
Bob
Sie sollten den zufälligen Teil korrigieren:: Notice how it needs to look for every single byte?Ersetzen bytedurch block(und das Beispiel entsprechend ändern). Das Laufwerk sucht den 4k-Teil (der weiter in 512-Byte-Blöcke aufgeteilt werden könnte, aber nicht darunter liegt. Es sucht nicht zwischen jedem Byte! Es sucht zwischen jedem Block, wenn der nächste Block nicht direkt dahinter liegt (was häufig vorkommt) fragmentierte Scheiben) Und das Suchen (Bewegen des Kopfes um den Plattenteller und Warten, bis der Block darunter vorbeigegangen ist) dauert sehr lange (einige Millisekunden)
Olivier Dulac
2
Eine kleine Dienote bis 4 kiB / 512B. 4kB ist auch die Größe der Seite auf, na ja, fast alles, so dass OS $ wahrscheinlich den vollen 4-kB-Block einliest, selbst wenn LBA-Treiber 512-B-Blöcke einlesen. Ich denke auch nicht, dass das Problem darin besteht, dass die Festplatte ein Byte mehr als die SDD finden muss, als dass sie sich physisch drehen muss, um die richtige Position zu finden. Wenn Sie erneut auf den Block zugreifen, müssen Sie erneut danach suchen, da sich die Festplatte ständig dreht. Jegliches Block-Remapping ist wahrscheinlich ein sekundärer Effekt (und ein erneut zugeordneter Block ist normalerweise gleich nach einem beschädigten Block, obwohl ich der Meinung bin, dass dies die Suche minimiert).
Maciej Piechotka
(Möglicherweise eine vollständige Randnotiz - ich bin mir nicht sicher, ob NAND / NOR, aber zumindest ist die DDR-Adressierung auch nicht völlig zufällig, wie der Name vermuten lässt, sondern funktioniert in einem 'Adress-Burst'. In den meisten Fällen sind dies 64 B, weil es so ist eine Größe von $ line der meisten CPUs, kann aber für andere Anwendungen viel größer sein.)
Maciej Piechotka
1
@OlivierDulac Ich denke immer noch, dass das Einführen von Blöcken möglicherweise verwirrend ist, aber ich habe versucht, es zu erklären. Antwort aktualisiert.
Bob
3

Wie bereits in anderen Antworten erwähnt, bezieht sich "4K" mit ziemlicher Sicherheit auf den wahlfreien Zugriff in Blöcken mit einer Größe von 4 KB.

Jedes Mal, wenn eine Festplatte (keine SSD) zum Lesen oder Schreiben von Daten aufgefordert wird, treten zwei erhebliche Verzögerungen auf:

  • Suchen Sie die Latenz, damit der Lese- / Schreibkopf die richtige kreisförmige Spur (oder den richtigen Zylinder) auf dem Plattenteller "sucht", einschließlich der Zeit, die der Kopf benötigt, um sich über der Spur zu stabilisieren und mit den auf dem Plattenteller gespeicherten Daten zu synchronisieren
  • Rotationslatenz, damit sich der sich drehende Plattenteller unter dem Lese- / Schreibkopf so dreht, dass der gewünschte Teil der Spur (der "Sektor") unter dem Kopf verläuft

Beide haben eine relativ konstante Zeitdauer für ein bestimmtes Laufwerk. Die Suchlatenz hängt davon ab, wie schnell der Kopf bewegt werden kann und wie weit er bewegt werden muss. Die Rotationslatenz hängt davon ab, wie schnell sich der Plattenteller dreht. Darüber hinaus haben sie sich in den letzten Jahrzehnten kaum verändert. Die Hersteller verwendeten tatsächlich durchschnittliche Suchzeiten, z. B. in Anzeigen. Sie hörten so ziemlich damit auf, als es in der Gegend wenig oder gar keine Entwicklung gab. Kein Hersteller, insbesondere in einem wettbewerbsintensiven Umfeld, möchte, dass seine Produkte nicht besser aussehen als die seiner Wettbewerber.

Eine typische Desktop-Festplatte dreht sich mit 7200 U / min, während sich ein typisches Laptop-Laufwerk mit etwa 5000 U / min dreht. Das bedeutet, dass es pro Sekunde insgesamt 120 Umdrehungen (Desktop-Laufwerk) oder etwa 83 Umdrehungen (Laptop-Laufwerk) durchläuft. Da die Festplatte im Durchschnitt eine halbe Umdrehung drehen muss, bevor der gewünschte Sektor unter den Kopf gelangt, können wir davon ausgehen, dass die Festplatte ungefähr doppelt so viele E / A-Anforderungen pro Sekunde verarbeiten kann, sofern dies angenommen wird

  • Entweder wird die Suche ausgeführt, während sich die Festplatte dreht (dies ist heute wahrscheinlich eine sichere Option für Festplatten, bei denen E / A-Suchen erforderlich sind), und die Suchlatenz ist nicht länger als die Rotationslatenz für die jeweilige E / A
  • oder der Kopf befindet sich bereits über dem richtigen Zylinder, sodass das Laufwerk nicht suchen muss (dies ist ein Sonderfall mit einer Suchlatenz von Null).

Wenn die Daten, auf die zugegriffen werden soll (zum Lesen oder Schreiben), physisch relativ lokalisiert sind, sollten wir erwarten können, dass sie in der Größenordnung von 200 E / A pro Sekunde ausgeführt werden können, was zu einer Rotationslatenz als limitierendem Faktor führt. Im allgemeinen Fall ist zu erwarten, dass das Laufwerk eine Leistung in der Größenordnung von 100 E / A pro Sekunde erbringt, wenn die Daten auf den Plattenteller oder die Plattenteller verteilt sind, eine erhebliche Suche erforderlich ist und die Suchlatenz den begrenzenden Faktor darstellt . In Bezug auf die Speicherung ist dies das " IOPS "Dies ist in der Regel der einschränkende Faktor bei realen Speichersystemen. (Dies ist ein wichtiger Grund, warum SSDs so viel schneller zu verwenden sind: Sie eliminieren die Latenz bei der Rotation.) Reduzieren Sie die Suchlatenz erheblich, da die physische Bewegung des Lese- / Schreibkopfs zu einer Tabellensuche in den Flash-Mapping-Layer-Tabellen wird, die elektronisch gespeichert werden.)

Schreibvorgänge sind in der Regel langsamer, wenn ein Cache-Flush durchgeführt wird. Normalerweise versuchen Betriebssysteme und Festplatten, zufällige Schreibvorgänge neu anzuordnen, um zufällige E / A-Vorgänge nach Möglichkeit in sequenzielle E / A-Vorgänge umzuwandeln, um die Leistung zu verbessern. Wenn es eine explizite Cache-Leerung oder eine Schreibsperre gibt , wird diese Optimierung entfernt, um sicherzustellen, dass der Zustand der Daten in einem dauerhaften Speicher mit den Erwartungen der Software übereinstimmt. Grundsätzlich gilt die gleiche Überlegung beim Lesen, wenn kein Festplatten-Cache beteiligt ist, entweder weil keiner vorhanden ist (heutzutage auf Desktop-Systemen ungewöhnlich) oder weil die Software dies absichtlich umgeht (was häufig bei der Messung der E / A-Leistung der Fall ist). Beide reduzieren die maximal mögliche IOPS-Leistung auf die des pessimistischeren Falls oder 120 IOPS für ein Laufwerk mit 7200 U / min.

  • Bei 100 IOPS bei 4 KiB pro E / A erhalten wir eine Leistung von ca. 400 KB / s.
  • Bei 200 IOPS bei 4 KiB pro E / A erhalten wir eine Leistung von ca. 800 KB / s.

Was einfach so passiert, dass es fast genau Ihren Zahlen entspricht. Random I / O mit kleinen Blockgrößen ist ein absoluter Leistungskiller für Rotationsfestplatten, weshalb es auch eine relevante Metrik ist.

Was die rein sequentielle E / A anbelangt, so ist ein Durchsatz im Bereich von 150 MB / s für moderne Rotationsfestplatten keineswegs unangemessen. Da jedoch nur sehr wenige E / A-Vorgänge in der realen Welt streng sequentiell sind, wird die rein sequentielle E / A-Leistung in den meisten Situationen eher zu einer akademischen Übung als zu einem Hinweis auf die tatsächliche Leistung.

ein CVn
quelle
Dies ist eine großartige Antwort und liest sich viel besser als meine :) Nur eine kleine Anmerkung, zumindest gibt Seagate in seinen Datenblättern noch eine durchschnittliche Suchlatenz an . WD scheint das nicht zu tun.
Bob
@ Bob Danke. Ich meinte eigentlich in werbung und ähnlichem; Ich habe die Antwort bearbeitet, um das zu klären. Ich denke, man kann mit Sicherheit sagen, dass nur sehr wenige Menschen die Datenblätter lesen, obwohl dies für viele wahrscheinlich eine ernüchternde Erfahrung wäre ...
ein Lebenslauf vom
2

4K bezieht sich auf zufällige I / O . Dies bedeutet, dass die Festplatte an zufälligen Stellen in der Testdatei aufgefordert wird, auf kleine Blöcke (4 KB) zuzugreifen. Dies ist eine Schwäche der Festplatten. Die Fähigkeit, auf Daten in verschiedenen Bereichen der Platte zuzugreifen, ist durch die Geschwindigkeit, mit der sich die Platte dreht, und durch die Geschwindigkeit, mit der sich die Lese- / Schreibköpfe bewegen können, begrenzt. Sequentielle E / A , bei denen auf aufeinanderfolgende Blöcke zugegriffen wird, sind viel einfacher, da das Laufwerk die Blöcke einfach lesen oder schreiben kann, während sich die Festplatte dreht.

Ein Solid-State-Laufwerk (SSD) hat keine derartigen Probleme mit zufälligen E / A-Vorgängen. Es muss lediglich nachgeschlagen werden, wo sich die Daten im zugrunde liegenden Speicher befinden (normalerweise NAND-Flash, kann 3D XPoint oder sogar DRAM sein) und gelesen werden oder schreiben Sie die Daten an die entsprechende Stelle. SSDs sind vollständig elektronisch und müssen nicht auf eine rotierende Festplatte oder einen sich bewegenden Schreib- / Lesekopf warten, um auf Daten zuzugreifen. Dies macht sie in dieser Hinsicht viel schneller als Festplatten. Aus diesem Grund erhöht ein Upgrade auf eine SSD die Systemleistung erheblich.

Randnotiz: Die sequenzielle E / A-Leistung auf einer SSD ist häufig auch viel höher als auf einer Festplatte. Bei einer typischen SSD sind mehrere NAND-Chips parallel zum Flash-Speicher-Controller geschaltet und können gleichzeitig darauf zugreifen. Durch die Verteilung der Daten auf diese Chips wird ein RAID 0-ähnliches Laufwerkslayout erzielt, das die Leistung erheblich steigert. (Beachten Sie, dass viele neuere Laufwerke, insbesondere billigere, einen NAND-Typ namens TLC NAND verwenden, der beim Schreiben von Daten tendenziell langsam ist. Laufwerke mit TLC NAND verwenden häufig einen kleinen Puffer mit schnellerem NAND, um eine höhere Leistung für kleinere Schreibvorgänge bereitzustellen, können dies jedoch verlangsamen dramatisch, sobald der Puffer voll ist.)

bwDraco
quelle
IIRC, einige NVMe-SSDs verwenden sogar einen DRAM-Cache.
timuzhti
1
Die meisten tun es. Dramlose SSDs sind ein bisschen am unteren Ende.
Geselle Geek