Warum sind 4k-Lesevorgänge in HDD / SSD-Benchmarks langsamer als Schreibvorgänge?


12

Zum Testen der Geschwindigkeit eines PC-Laufwerks stehen verschiedene Benchmark-Tools zur Verfügung.

Hier ist ein Benchmark-Beispiel für eine SATA-SSD:

  • Sequentielles Lesen: 718,498 MB / s
  • Sequentielles Schreiben: 777,414 MB / s
  • Random Read 512 KB: 160,541 MB / s
  • Random Write 512 KB: 838,930 MB / s
  • Random Read 4 KB (QD = 1): 26,985 MB / s [6588,1 IOPS]
  • Random Write 4 KB (QD = 1): 135,603 MB / s [33106,2 IOPS]
  • Random Read 4 KB (QD = 32): 177,003 MB / s [43213,6 IOPS]
  • Random Write 4 KB (QD = 32): 178,397 MB / s [43554,0 IOPS]

m.2 SSD:

  • Sequentielles Lesen (Q = 32, T = 1): 829,119 MB / s
  • Sequentielles Schreiben (Q = 32, T = 1): 677,645 MB / s
  • Random Read 4 KB (Q = 32, T = 1): 744,328 MB / s [181720,7 IOPS]
  • Zufälliges Schreiben 4 KB (Q = 32, T = 1): 144,876 MB / s [35370,1 IOPS]
  • Sequentielles Lesen (T = 1): 785.600 MB / s
  • Sequentielles Schreiben (T = 1): 789,973 MB / s
  • Random Read 4KiB (Q = 1, T = 1): 56,585 MB / s [13814,7 IOPS]
  • Zufälliges Schreiben 4 KB (Q = 1, T = 1): 170,449 MB / s [41613,5 IOPS]

Festplatte:

  • Sequentielles Lesen: 114,988 MB / s
  • Sequentielles Schreiben: 111.043 MB / s
  • Random Read 512 KB: 39,260 MB / s
  • Random Write 512 KB: 57,409 MB / s
  • Random Read 4 KB (QD = 1): 0,546 MB / s [133,4 IOPS]
  • Random Write 4 KB (QD = 1): 0,757 MB / s [184,9 IOPS]
  • Random Read 4 KB (QD = 32): 1,582 MB / s [386,3 IOPS]
  • Random Write 4 KB (QD = 32): 0,700 MB / s [171,0 IOPS]

In jedem Fall ist "Random Read 4KB Q1" langsamer als Write und in den meisten Fällen ist es das Gegenteil für "QD32".

In einigen Foren sagen die Leute, es sei eine Einschränkung in Bezug auf die SSD-Chipstruktur, aber wie üblich zeigen Festplatten das gleiche Verhalten, es scheint ein anderer Grund zu sein?!

Antworten:


9

TL; DR: Das liegt daran, dass die SSD Sie anlügt und sagt, dass das Schreiben abgeschlossen ist, bevor es erfolgt. Es kann nicht mit der gleichen Sache für das Lesen davonkommen.

Die längere Version der Antwort ist Schreib-Caching.

Beginnen wir mit dem Fall QD1. Die SSD meldet den Schreibvorgang als beendet an das Betriebssystem, sobald sie die Daten empfangen und in einem Cache lokal auf dem Laufwerk gespeichert hat, jedoch bevor sie tatsächlich in das NAND geschrieben wurde. Dies macht einen großen Unterschied, da das Schreiben von Daten in NAND ziemlich langsam ist. Für Lesevorgänge muss es tatsächlich die Daten von NAND lesen, bevor es sie zurücksenden kann (es sei denn, es hat sie zuvor gelesen und befindet sie noch im Cache, aber das ist bei zufälligen Lesevorgängen sehr unwahrscheinlich).

Der Nachteil dabei ist, dass es angesichts eines plötzlichen Stromausfalls zu einem Datenverlust von Daten kommen kann, die auf die SSD geschrieben wurden, aber noch nicht in das NAND gelangt sind. Einige Unternehmens-SSDs enthalten einen Superkondensator, der genügend Strom speichert, um das Schreiben der Daten im Cache in den NAND im Falle eines plötzlichen Stromausfalls abzuschließen.

Sie sehen dasselbe für Festplatten, da diese auch Schreib-Caching durchführen. Sie sind einfach nicht annähernd so aggressiv. Warum ist die SSD so aggressiv? Um darauf zu antworten, müssen wir den Fall QD32 betrachten, der sowohl komplizierter als auch interessanter ist.

Es ist nicht wahr, was Sie sagen, dass zufällige Lesevorgänge im Allgemeinen schneller sind als zufällige Schreibvorgänge bei QD32. Es hängt sehr davon ab, welche SSDs Sie sich ansehen.

Wenn Sie sich 4k QD1-Zufallslesevorgänge auf vielen SATA-SSDs ansehen, scheinen alle im Bereich von 20 bis 30 MB / s zu arbeiten. Warum ist das so? Dies liegt daran, dass es bei 4k QD1-Zufallslesevorgängen hauptsächlich um Latenzen und nicht um den Durchsatz geht. Die Latenz besteht aus drei Teilen:

  1. Die Schnittstellenlatenz von SATA / AHCI, bei der dem Laufwerk mitgeteilt wird, was zu tun ist, und die Daten gesendet werden.
  2. Der Controller selbst muss herausfinden, was mit den empfangenen Daten und Anweisungen zu tun ist.
  3. Die Zeit, die benötigt wird, um die Daten tatsächlich zu lesen oder in einen NAND-Chip zu schreiben.

Weder 1. noch 3. haben sich lange Zeit stark verändert, und deshalb haben sich auch die 1k QD1-Zufallslesungen nicht viel geändert.

Die jüngste Umstellung von SSDs von SATA / AHCI auf PCIe / NVMe hat die Latenz von 1 erheblich verringert, weshalb bestimmte SSDs von m.2 und PCIe in letzter Zeit hier große Verbesserungen gezeigt haben.

Eine Sache, die ein SSD-Controller tun kann, um die Latenz erheblich zu verbessern, ist das parallele Lesen oder Schreiben auf mehrere NAND-Chips. Auf diese Weise wird der größte Teil der Latenz von 3 maskiert. Wenn Sie QD32 4k-Zufallslesevorgänge mit NCQ ausführen, kann die SSD den Lesevorgang ausführen Anfragen nicht in der richtigen Reihenfolge und stellen Sie sicher, dass so viele NAND-Chips wie möglich parallel gelesen werden.

Bei QD32 4k-Zufallsschreibvorgängen führt die SSD eine sogenannte Schreibkombination durch. Wenn viele kleine Schreibanforderungen im SSD-Controller eingehen, werden diese lokal zwischengespeichert, und wenn ein ausreichend großer Schreibpuffer aufgebaut wurde, teilt der Controller ihn in ausreichend große Blöcke auf und schreibt die Blöcke parallel auf mehrere NAND-Chips, um die Maskierung zu unterstützen NAND-Latenz. Ein weiterer Vorteil der Schreibkombination besteht darin, dass die meisten SSDs heutzutage eine Seitengröße (kleinste Menge, die gelesen oder geschrieben werden kann) von mehr als 4 KB haben. Wenn Sie Schreibvorgänge kombinieren, bis Sie die Seitengröße erreicht haben, vermeiden Sie viel Schreibverstärkung. Um dies zu erreichen, sind SSDs beim Schreiben-Caching so aggressiv.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.