Was ist los mit meiner Geschwindigkeit bei 4K? Warum ist es so langsam? Oder soll es so sein?
Ist die Geschwindigkeit in Ordnung? Warum habe ich so niedrige Geschwindigkeit bei 4K?
hard-drive
hardware-failure
storage
speed
benchmarking
User6539
quelle
quelle
Antworten:
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.
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.
quelle
Notice how it needs to look for every single byte?
Ersetzenbyte
durchblock
(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)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:
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
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.
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.
quelle
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.)
quelle