wake-up-neo.com

NVMe ssd: Warum schreibt 4k schneller als liest?

Ich habe eine Samsung 960 Pro 512 GB SSD auf NVMe mit PCIe Gen.3x4. Ich benutze den Samsung NVMe Driver 2.0.0.1607. Die SSD läuft einwandfrei. Ich verstehe jedoch nicht, warum das Schreiben von 4k schneller ist als das Lesen von 4k. Ich benutze AS Benchmark:

 enter image description here

Es ist ein Faktor von 3! Stimmt etwas nicht (mit meinem System oder AS Benchmark) oder ist das normal?

51
musbach

Bei 4k-Lesevorgängen geht es um das Schwierigste, was das Laufwerk tun kann. Sie gehören zu den kleinsten Blockgrößen, die das Laufwerk verarbeiten kann, und es gibt keine Möglichkeit für das Laufwerk, große Datenmengen vorzuladen. Tatsächlich sind sie wahrscheinlich recht ineffizient, wenn die Load-Ahead-Logik des Laufwerks etwas lesen möchte größer als 4kb.

"Normale" Laufwerkslesevorgänge sind mit größerer Wahrscheinlichkeit größer als 4 KB, da nur sehr wenige Dateien so klein sind und sogar die Auslagerungsdatei mit großer Wahrscheinlichkeit in großen Blöcken gelesen wird, da es ungewöhnlich wäre, wenn ein Programm "nur" Dateien enthält. 4 KB Speicher ausgelagert. Dies bedeutet, dass jedes Vorladen, das das Laufwerk versucht, den Durchsatz des Laufwerks beeinträchtigt.

4K-Lesevorgänge passieren möglicherweise den Laufwerkspuffer, aber der "zufällige" Teil des Tests macht sie völlig unvorhersehbar. Der Controller weiß nicht, wann das Laufwerk möglicherweise wieder die üblichen "großen" Lesevorgänge benötigt.

Andererseits können 4K-Schreibvorgänge auf effiziente Weise nacheinander gepuffert, in eine Warteschlange gestellt und ausgeschrieben werden. Der Laufwerkspuffer kann einen Großteil der Catch-and-Write-Arbeit erledigen, für die er entwickelt wurde, und der Wear Leveler kann sogar alle diese 4-KB-Schreibvorgänge demselben Laufwerkslöschblock zuweisen und gelegentlich einen 4-KB-Zufallsschreibvorgang ausführen Etwas näher an einem sequentiellen Schreiben.

Tatsächlich vermute ich, dass dies der Fall ist, wenn "4K-64Thrd" geschrieben wird. "64-Thrd" ist verwendet anscheinend eine große Warteschlangentiefe und signalisiert damit dem Laufwerk, dass es eine große Menge enthält von Daten zum Lesen oder Schreiben. Dies löst eine große Anzahl von Schreibclustern aus und nähert sich so der sequentiellen Schreibgeschwindigkeit des Laufwerks an. Das Ausführen eines 4-KB-Schreibvorgangs ist immer noch mit einem Mehraufwand verbunden, aber jetzt können Sie das Potenzial des Puffers voll ausschöpfen. In der Leseversion des Tests stoppt der Antriebsregler das Vorladen von Daten, umgeht möglicherweise den Puffer und wechselt stattdessen in einen "unformatierten" Lesemodus, wobei er sich wieder der sequentiellen Lesegeschwindigkeit nähert.

Grundsätzlich kann der Antriebsregler etwas tun, um einen 4K-Schreibvorgang effizienter zu gestalten, insbesondere wenn ein Cluster von ihnen zu einer ähnlichen Zeit ankommt, während er nichts tun kann, um einen einzelnen zu erstellen. 4K-Lesen ist effizienter, insbesondere wenn versucht wird, den Datenfluss zu optimieren, indem Daten vorab in den Cache geladen werden.

73
Mokubai

Andere Antworten haben bereits erklärt, warum das Schreiben möglicherweise schneller ist als das Lesen. Ich möchte hinzufügen, dass dies für dieses Laufwerk absolut normal ist, da es durch Benchmarks bestätigt wird, die Sie in Bewertungen finden.

Die Rezension von ArsTecnica

ArsTechnica hat das Laufwerk überprüft, sowohl Ihre Version (512 GB) als auch die Version 2 TB:

ArsTechnica (Diese Grafik ist in der Rezension nicht sofort sichtbar, es ist die 5. in der ersten Galerie, Sie müssen darauf klicken.)

Die Leistung dieser beiden Modelle ist sehr ähnlich, und ihre Anzahl entspricht Ihrer: Das Laufwerk kann mit 37 MB/s lesen und mit 151 MB/s schreiben.

AnandTechs Bewertung

AnandTech hat auch das Laufwerk überprüft: Sie verwendeten das 2-TB-Modell und ermittelten den Durchschnitt der Testergebnisse mit einer Warteschlangentiefe von 1, 2 und 4. Dies sind die Diagramme:

AnandTech 4K readAnandTech 4K write

Das Laufwerk liest mit 137 MB/s und schreibt mit 437 MB/s. Die Anzahl ist viel höher als Ihre, aber wahrscheinlich liegt es an den höheren Warteschlangentiefen. Wie in Ihrem Fall ist die Schreibgeschwindigkeit dreimal so hoch wie die Lesegeschwindigkeit.

PC Worlds Rückblick

Noch eine Rezension von PC World : Sie haben die Version 1 TB getestet, und die Ergebnisse für 4K lauten 30 MB/s zum Lesen und 155 MB/s zum Schreiben: PC World graph Die Schreibgeschwindigkeit stimmt mit Ihrer überein, aber hier ist das Laufwerk beim Lesen noch langsamer. Das Ergebnis ist ein Verhältnis von fünf zu eins und nicht von drei zu eins.

Fazit

Überprüfungen bestätigen, dass es bei diesem Laufwerk normal ist, dass die Schreibgeschwindigkeit für zufällige 4K-Dateien viel höher ist als die Lesegeschwindigkeit: Je nach Test kann sie sogar fünfmal höher sein.

Ihre Fahrt ist in Ordnung. Es gibt keinen Grund zu der Annahme, dass es fehlerhaft ist oder dass Ihr System ein Problem hat.

16
Fabio Turati

SSD-Controller speichert Schreibvorgänge im integrierten NVRAM und speichert sie zu geeigneten Zeiten auf Flash-Medien. Die Schreiblatenz ist somit die Cache-Zugriffslatenz, typischerweise 20us. Lesevorgänge werden dagegen medienfern mit einer Zugriffszeit von bestenfalls 120-150us zugestellt.

8
Andrey Kuzmin

Um die Antwort von Andrey zu erweitern, müssen Sie sich den damit verbundenen Overhead ansehen, bevor die SSD dem Computer signalisieren kann, dass der Vorgang abgeschlossen ist.

Zum Schreiben müssen die Daten lediglich in einen internen RAM Cache geschrieben werden. Später wird es zusammen mit anderen 4k-Blöcken und Metadaten, die zur Überprüfung, Fehlerkorrektur und Lokalisierung benötigt werden, in den Flash-Speicher geschrieben.

Zum Lesen muss die SSD zuerst die Daten lokalisieren. Der Speicherort, den der Computer lesen möchte, wird als logische Adresse bezeichnet und hat keine direkte Beziehung zum physischen Speicherort der Daten im Flash-Speicher. Die SSD wandelt die logische Adresse in eine physikalische Adresse um, basierend auf der Geometrie des Flash-Speichers (der Art und Weise, wie die Zellen angeordnet sind), dem erneuten Zuordnen von fehlerhaften Blöcken, dem Wear Leveling und verschiedenen anderen Faktoren. Es muss dann warten, bis alle anderen Vorgänge abgeschlossen sind, bevor es die Daten aus dem Flash abruft, sie überprüft und gegebenenfalls die Fehlerkorrektur erneut liest und anwendet, möglicherweise sogar den gesamten Block an einer anderen Stelle neu schreibt.

Während die Gesamtzeit für eine Schreiboperation länger sein kann als für eine typische Leseoperation, ist die Zeit, die die SSD benötigt, um zu melden, dass die Operation abgeschlossen ist, soweit sie weitere Befehle verarbeiten kann, geringer. Bei großen Blöcken ist der Overhead nicht der begrenzende Faktor, aber bei vielen kleinen Blöcken beginnt er, die Lese-/Schreibgeschwindigkeit zu begrenzen.

1
user3241