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

12836
User6539

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

Screenshot des Benchmarks

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

45
Das ist normal und erwartet. "4K" bedeutet in diesem Zusammenhang zufälliges Lesen / Schreiben (in Blöcken von 4 Kilobytes, daher "4K"), auf dem mechanische HDDs furchtbar funktionieren. Dort möchten Sie eine SSD. Siehe [hier] (https://wiki.mikejung.biz/CrystalDiskMark) für eine ausführlichere Erklärung. Bob vor 6 Jahren 13
4 Kb wird verwendet, da dies die typische Größe eines Festplatten-Clusters und bei vielen modernen HDDs des eigentlichen Sektors (der Low-Level-Struktur auf der Festplatte selbst) ist. Das heißt, die kleinste Datenmenge, die bei jedem Lesen oder Schreiben wahrscheinlich zu einem Zeitpunkt übertragen wird, auch wenn die angeforderten Daten kleiner sind. Interessanterweise, dass auf dieser Seite KEINE Antwort enthalten ist, werden sogar Cluster oder Sektoren erwähnt. thomasrutter vor 6 Jahren 0
@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 Ausmaß) nicht relevant, wie viele Daten übertragen werden und ob es sich um ein Vielfaches der Sektorgröße der Festplatte handelt. Der wichtige Teil ist, dass der Test eine minimale Datenmenge überträgt, um die Suchleistung zu messen. Micheal Johnson vor 6 Jahren 2
Ist dieser Test auf einer Partition oder auf der gesamten Festplatte? Tests auf Partitionsebene können bei 4K-Zugriffen eine viel schlechtere Leistung bringen, wenn Sie eine Festplatte mit physischen 4K-Sektoren und logischen 1K-Sektoren haben und die Partitionsgrenze falsch auf Sektoren ausgerichtet ist. Toby Speight vor 6 Jahren 0
Moderne Partitionierungswerkzeuge sorgen in der Regel dafür, dass Partitionen an einer Sektorengrenze beginnen und enden. Sogar 1 MB Granularität ist jetzt üblich. Vorbei sind die Zeiten der alten "63 512-Byte-Sektoren", die für native 4-KB-Sektoren Probleme bereiten würden. thomasrutter vor 6 Jahren 0
Welche Marke / Modell ist diese Festplatte? i486 vor 6 Jahren 0

3 Antworten auf die Frage

84
Bob

Worauf Sie gerade stoßen, ist typisch für mechanische Festplatten und einer der Hauptvorteile von SSDs: Festplatten haben eine furchtbare Direktzugriffsleistung.

In Crystal „Seq“ bedeutet sequenziellen Zugriff während „4K“ bedeutet zufälligen Zugriff (in Blöcken von 4 KB zu einem Zeitpunkt, da einzelnes Bytes zu weit wäre langsam und unrealistisch 1 ).


Definitionen

Es gibt zwei Möglichkeiten, auf eine Datei zuzugreifen.

Sequentieller Zugriff

Sequenzieller Zugriff bedeutet, dass Sie die Datei mehr oder weniger ein Byte nach dem anderen lesen oder schreiben. Wenn Sie beispielsweise ein Video ansehen, würden Sie das Video von Anfang bis Ende laden. Wenn Sie eine Datei herunterladen, wird sie von Anfang bis Ende heruntergeladen und auf die Festplatte geschrieben.

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

Zufälliger Zugriff

Zufällige Zugang bedeutet, dass es keine offensichtlichen Muster auf das liest oder schreibt. Das muss nicht wirklich zufällig sein. es bedeutet wirklich "nicht sequentiell". Wenn Sie beispielsweise viele Programme gleichzeitig starten, müssen sie viele Dateien lesen, die sich auf Ihrem Laufwerk befinden.

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

Blöcke

Ich habe ein paar Mal Blöcke erwähnt. Da Computer mit so großen Größen umgehen (1 MB ~ = 1000000 B), ist selbst der sequentielle Zugriff ineffizient, wenn Sie das Laufwerk für jedes einzelne Byte fragen müssen - es gibt zu viel Geschwätz. In der Praxis fordert das Betriebssystem jeweils Datenblöcke von der Platte an.

Ein Block ist nur ein Bereich von Bytes. Block Nr. 1 kann zum Beispiel Bytes Nr. 1- Nr. 512 sein, Block Nr. 2 kann Bytes Nr. 513 bis Nr. 1024 usw. sein. Diese Blöcke sind je nach Laufwerk entweder 512 Byte oder 4096 Byte groß. Der sequenzielle Blockzugriff ist jedoch selbst nach dem Blockieren und nicht mit einzelnen Bytes schneller als der Blockzugriff.


Performance

Sequentiell

Der sequentielle Zugriff ist im Allgemeinen schneller als der Direktzugriff. Dies liegt daran, dass das Betriebssystem und das Laufwerk durch sequenziellen Zugriff vorhergesagt werden können, was als nächstes benötigt wird, und ein großes Stück im Voraus geladen wird. Wenn Sie die Blöcke "1, 2, 3, 4" angefordert haben, kann das Betriebssystem annehmen, dass Sie als Nächstes "5, 6, 7, 8" benötigen, so dass das Laufwerk "1, 2, 3, 4" liest 5, 6, 7, 8 "in einem Arbeitsgang. In ähnlicher Weise kann das Laufwerk den physischen Speicher auf einmal ablesen, anstatt "Suche nach 1, Anzeige von 1,2,3,4, Suche nach 5, Anzeige von 5, 6, 7, 8".

Oh, ich erwähnte das Suchen nach etwas. Mechanische Festplatten haben aufgrund ihrer physischen Anordnung eine sehr langsame Suchzeit: Sie bestehen aus einer Reihe schwerer metallisierter Festplatten, deren physische Arme sich hin und her bewegen, um die Festplatte zu lesen. Hier ist ein Video von einer offenen Festplatte, auf der Sie die sich drehenden Scheiben und die sich bewegenden Arme sehen können.

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

Dies bedeutet, dass zu jeder Zeit nur das Datenbit unter dem Kopf am Armende gelesen werden kann. Das Laufwerk muss auf zwei Dinge warten: Es muss warten, bis sich der Arm zum rechten Ring ("Track") der Festplatte bewegt, und auch darauf gewartet werden, dass sich die Festplatte dreht, sodass die benötigten Daten unter dem Lesevorgang liegen Kopf. Dies ist als Suchen 2 bekannt . Sowohl die sich drehenden als auch die sich bewegenden Arme benötigen körperliche Zeit, um sich zu bewegen, und sie können nicht viel beschleunigt werden, ohne Schaden zu riskieren.

Dies dauert in der Regel sehr lange, viel länger als die tatsächliche Ablesung. Wir sprechen von> 5ms, nur um zu dem Ort zu gelangen, an dem das angeforderte Byte lebt, während die tatsächliche Anzeige des Bytes durchschnittlich 0,00000625 ms pro sequentiellem Byte-Lesen (oder 0,003125 ms pro 512-B-Block) beträgt.

Zufällig

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

SSDs

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

Eine SSD, ein Solid-State-Laufwerk, ist, wie der Name schon sagt, Solid State . Das heißt, es hat keine beweglichen Teile . Die Art und Weise, wie eine SSD ausgelegt ist, bedeutet, dass (effektiv 3 ) nicht die Position eines Bytes nachgeschlagen werden muss. es weiß es schon . Aus diesem Grund weist eine SSD eine deutlich geringere Performance-Lücke zwischen sequenziellem und wahlfreiem Zugriff auf.

Es gibt immer noch eine Lücke, die jedoch weitgehend darauf zurückzuführen ist, dass Sie nicht vorhersagen können, was als nächstes kommt, und die Daten vorab laden, bevor Sie danach gefragt werden.


1 Genauer gesagt, mit LBA werden Laufwerke aus Gründen der Effizienz in Blöcken von 512 Bytes (512n / 512e) oder 4kB (4Kn) adressiert. Außerdem benötigen echte Programme fast immer nur ein Byte.

2 Technisch bezieht sich Suchen nur auf die Bewegung des Arms. Das Warten auf das Rotieren der Daten unter dem Kopf ist die Rotationslatenz oberhalb der Suchzeit.

3 Technisch gesehen haben sie Nachschlagetabellen und bilden sie aus anderen Gründen ab, z. B. zum Abnutzungsausgleich. Diese sind jedoch im Vergleich zu einer Festplatte völlig vernachlässigbar.

@ KamilMaciorowski Ich überlege gerade diese Vereinfachung, weil sie meine Such- und Lesezeitberechnung abwirft. Naja. Es ist nicht zu wichtig für die Konzepte. Bob vor 6 Jahren 0
Sie sollten den zufälligen Teil korrigieren: `Beachten Sie, wie es für jedes einzelne Byte aussehen muss?`: Ersetzen Sie `byte` durch` block` (und ändern Sie das Beispiel entsprechend). Das Laufwerk sucht den 4k-Teil (der weiter in 512-Byte-Chunk verteilt werden könnte, aber nicht weniger als das. Er sucht nicht zwischen jedem Byte! Er sucht zwischen jedem Block, wenn der nächste Block nicht direkt dahinter ist (was viel passiert) zersplitterte Platten) und Suchen (Bewegen des Kopfes um die Platte und Warten, bis der Block darunter hindurchgeht) ist das, was sehr lange dauert (einige Millisekunden). Olivier Dulac vor 6 Jahren 0
Eine kleine Dienote bis 4 kiB / 512B. 4kiB ist auch die Größe der Seite auf fast alles, so dass OS $ wahrscheinlich einen vollständigen 4-KB-Block lesen kann, auch wenn LBA-Treiber 512 B-Blöcke lesen. Ich glaube auch nicht, dass das Problem darin besteht, dass die Festplatte jedes Byte mehr als SDD "finden" muss, als dass sie physisch in die richtige Position gedreht werden muss. Wenn Sie erneut auf den Block zugreifen, müssen Sie ihn erneut suchen, da sich die Festplatte ständig dreht. Jedes Block-Remapping ist wahrscheinlich ein sekundärer Effekt (und ein neu zugeordneter Block ist in der Regel gleich nach einem beschädigten, wie auch immer ich glaube, die Suche zu minimieren). Maciej Piechotka vor 6 Jahren 2
(Möglicherweise eine vollständige Randbemerkung - Ich bin nicht sicher über NAND / NOR, aber zumindest die DDR-Adressierung ist nicht völlig zufällig, wie der Name schon sagt, sondern funktioniert in 'Burst'-Adressen von Adressen. 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 vor 6 Jahren 0
@OlivierDulac Ich weiß, es ist nicht ganz genau, aber ich dachte, der Umgang mit Bytes wäre für das OP leichter zu verstehen. Deshalb ist die Fußnote da. Wenn ich etwas Zeit habe, kann ich es immer noch in Blöcke überarbeiten, aber dann muss ich das Was und Warum richtig erklären: \ Bob vor 6 Jahren 0
@ Bob vielleicht nur s / byte / block / in der ganzen Antwort könnte das reichen? Das Byte 67 wird zu Block (Nummer) 67 und funktioniert auch? Olivier Dulac vor 6 Jahren 0
@OlivierDulac Ich denke immer noch, dass die Einführung von Blöcken möglicherweise verwirrend ist, aber ich habe es versucht zu erklären. Antwort aktualisiert Bob vor 6 Jahren 1
@MaciejPiechotka Ich habe "find" im Sinne des Laien verwendet - natürlich weiß die Festplatte intern, auf welcher Platte, auf welchem ​​Track und auf welchem ​​Sektor sie sich befindet, aber sie muss sie trotzdem physisch "finden". Ich habe die Antwort aktualisiert, um das technischere * seek * zu verwenden. Ich bin mir nicht sicher, ob das einfacher oder schwieriger zu verstehen ist - wiederum aus der Perspektive eines Menschen, der überhaupt nichts über die Interna von Laufwerken weiß. Bob vor 6 Jahren 0
Das Drehen von Festplatten mit wahlfreiem Zugriff ist im Großen und Ganzen nicht "schrecklich". Im Vergleich zu Festkörperspeichern ist es sicherlich schlecht, aber 5-10 Millisekunden sind immer noch viel besser als Suchzeiten auf den Medien, die rotierende Festplatten ersetzen. ** Bei Bändern wurden die Suchzeiten häufig in Minuten gemessen **. Das ist * schrecklich * für den Direktzugriff (und immer noch besser als das Sneaker-Netz in der Bibliothek). Ben Voigt vor 6 Jahren 0
2
bwDraco

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

Bei einem Solid-State-Laufwerk (SSD) treten bei der zufälligen Ein- / Ausgabe keine Probleme auf, da nur nachgeschlagen werden muss, wo die Daten im zugrunde liegenden Speicher (normalerweise NAND-Flash, 3D-XPoint oder sogar DRAM) gespeichert und gelesen werden können oder schreiben Sie die Daten an der entsprechenden 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, was sie in dieser Hinsicht viel schneller als Festplatten macht. Aus diesem Grund erhöht das Upgrade auf eine SSD die Systemleistung erheblich.

Randbemerkung: Die sequentielle E / A-Leistung einer SSD ist häufig auch viel höher als auf einer Festplatte. Eine typische SSD hat mehrere NAND-Chips, die parallel an den Flash-Speichercontroller angeschlossen sind, und kann gleichzeitig darauf zugreifen. Durch die Verteilung der Daten auf diese Chips wird ein Laufwerk-Layout ähnlich RAID 0 erreicht, das die Leistung erheblich erhöht. (Beachten Sie, dass viele neuere, vor allem günstigere, Laufwerke eine Art von NAND verwenden, die als TLC NAND bezeichnet wird und 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 zu bieten, können dies jedoch verlangsamen Sie dramatisch, sobald der Puffer voll ist.)

Bei IIRC verwenden einige NVMe-SSDs sogar einen DRAM-Cache. Alpha3031 vor 6 Jahren 0
Die meisten tun es. Dramless SSDs sind ein bisschen am unteren Ende. Journeyman Geek vor 6 Jahren 1
2
a CVn

Wie bereits in anderen Antworten erwähnt, bezieht sich "4K" fast sicher auf Direktzugriff in Blöcken der Größe 4 KiB.

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

  • Suchlatenz, damit der Lese- / Schreibkopf die richtige kreisförmige Spur (oder den "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 die sich drehende Platte unter dem Lese- / Schreibkopf so dreht, dass der gewünschte Abschnitt der Spur (der "Sektor") unter dem Kopf verläuft

Beides ist für ein bestimmtes Laufwerk relativ konstant. Die Suchlatenz ist eine Funktion davon, wie schnell der Kopf bewegt werden kann und wie weit er bewegt werden muss, und 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. Hersteller verwendeten normalerweise durchschnittliche Suchzeiten, z. B. in Anzeigen. Sie hörten fast damit auf, wenn in der Gegend wenig oder keine Entwicklung stattfand. Kein Hersteller möchte, insbesondere in einem wettbewerbsintensiven Umfeld, dass seine Produkte nicht besser aussehen als die seiner Mitbewerber.

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

  • Entweder wird der Suchvorgang ausgeführt, während sich die Festplatte dreht (dies ist wahrscheinlich eine sichere Wette für Festplatten, bei denen I / O das Suchen erfordert), und die Suchlatenzzeit ist nicht länger als die Rotationslatenzzeit für die jeweilige I / O
  • oder der Kopf befindet sich bereits über dem richtigen Zylinder, so dass das Laufwerk nicht suchen muss (was ein Spezialfall des oben genannten ist, mit einer Suchlatenz von Null)

Wir sollten also in der Lage sein, in der Größenordnung von 200 I / O pro Sekunde zu arbeiten, wenn die Daten, auf die zugegriffen werden soll (zum Lesen oder Schreiben), physisch relativ lokalisiert sind, was zu einer Begrenzung der Rotationslatenz führt. Im allgemeinen Fall würden wir erwarten, dass das Laufwerk in der Lage ist, in der Größenordnung von 100 E / A pro Sekunde zu arbeiten, wenn die Daten über die Platte oder die Platten verteilt sind, was ein erhebliches Suchen erforderlich macht und die Suchlatenz als limitierenden Faktor darstellt . In Bezug auf die Speicherung ist dies das " IOPS "Leistung "der Festplatte; dies ist nicht die sequentielle E / A-Leistung, sondern der begrenzende Faktor in realen Speichersystemen. (Dies ist ein großer Grund, warum SSDs so viel schneller verwendet werden können: Sie eliminieren die Rotationslatenz und 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 normalerweise langsamer, wenn ein Cache-Flush involviert ist. Normalerweise versuchen Betriebssysteme und Festplatten, zufällige Schreibvorgänge neu zu ordnen, um zufällige E / A nach Möglichkeit in sequentielle E / A zu verwandeln, um die Leistung zu verbessern. Wenn es eine explizite Cache-Flush- oder Schreibbarriere gibt, wird diese Optimierung eliminiert, um sicherzustellen, dass der Status der Daten im permanenten Speicher mit dem übereinstimmt, was die Software erwartet. Grundsätzlich gilt dasselbe beim Lesen, wenn kein Festplatten-Cache erforderlich ist, entweder weil es keinen gibt (heute bei Desktop-Systemen ungewöhnlich) oder weil die Software ihn absichtlich umgeht (was häufig beim Messen der E / A-Leistung geschieht). Beides reduziert die maximal mögliche IOPS-Leistung auf die des pessimistischeren Falles oder 120 IOPS für ein Laufwerk mit 7200 U / min.

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

Was gerade so passiert, dass Ihre Zahlen fast genau übereinstimmen. Zufällige E / A mit kleinen Blockgrößen ist ein absoluter Leistungskiller für Rotationsfestplatten, weshalb sie auch eine relevante Metrik ist.

Bei rein sequentiellen E / A-Operationen ist ein Durchsatz im Bereich von 150 MB / s für moderne Rotationsfestplatten überhaupt nicht zumutbar. Aber sehr wenig E / A in der realen Welt ist streng sequenziell. In den meisten Situationen wird die rein sequenzielle E / A-Leistung eher eine akademische Übung als ein Hinweis auf eine reale Leistung.

Dies ist eine großartige Antwort und liest sich so viel besser als meine :) Nur eine kleine Anmerkung, zumindest Seagate gibt immer noch die durchschnittliche Suchlatenz an [in ihren Datenblättern] (https://www.seagate.com/files/staticfiles/docs/ pdf / datenblatt / disc / desktop-hdd-datenblatt-ds1770-1-1212de.pdf). WD scheint nicht zu sein. Bob vor 6 Jahren 0
@ Bob Danke. Ich meinte eigentlich in Werbung und ähnlichem; Ich habe die Antwort bearbeitet, um das zu verdeutlichen. Ich denke, man kann mit Sicherheit sagen, dass nur sehr wenige Menschen die Datenblätter lesen, auch wenn dies für viele wahrscheinlich eine ernüchternde Erfahrung wäre ... a CVn vor 6 Jahren 0