2017-08-19 3 views
0

Ich habe eine Western Digital 500 GB interne SSD (WDS500G1B0A). Seine Spezifikation gibt 525 Mbit/s sequentieller Schreibgeschwindigkeiten an. Ich formatierte diese SSD mit f2fs.formatierten SSD sequentiellen Schreibdurchsatz mit O_SYNC Flag

Dann habe ich sequentielle Schreibvorgänge der Größe 4k auf dem Dateisystem mit O_SYNC-Flag durchgeführt (um sicherzustellen, dass die Schreibvorgänge festgeschrieben werden, wenn der Schreibvorgang zurückkehrt). Mein Testprogramm ist single-threaded.

Ich verstehe, dass der Durchsatz eine Kombination aus IOPs und Latenzbewertungen der zugrunde liegenden SSD sein wird. Welchen Durchsatz sollte ich bei einer solchen Ausführung erwarten? Ich habe nur ungefähr 8k IOPS.

Ich kann auch mein Testprogramm teilen, falls mir etwas Grundlegendes fehlt.

Vermisse ich auch etwas anderes mit der Formatierung von SSD etc.?

Wenn ich das gleiche Programm ohne O_SYNC-Flag auf der gleichen formatierten SSD ausführen, bekomme ich 10 mal bessere Ergebnisse (ca. 80k IOPS). Welche zusätzlichen Einstellungen oder Tests kann ich durchführen, um besser zu verstehen, was passiert?

Antwort

0

Lassen Sie mich zuerst zugeben, dass ich durch die 80 k IOPS ohne O_SYNC Flag verblüfft wurde, da sie zufällig mit den SSD IOPS zusammenfallen (525 MB/4k Blockgröße ~ 100 k IOPS). Ich hätte an der Durchsatzspezifikation von 525 MB für meine Analyse festhalten sollen. Was ich beobachtet habe, ist, dass der SSD-Durchsatz sogar mit O_SYNC-Flag nahe bei dieser Spezifikation kommt, wenn auch mit sehr großer Blockgröße (etwa 16 MB), was verständlich ist.

Da ohne O_SYNC-Flag, Linux die Schreibvorgänge in In-Memory-Kernel-Puffer festschreiben muss, können wir es nicht wirklich für zugrunde liegende SSD IO-Leistungsanalyse verwenden. Es muss von anderen Faktoren der Hardware wie Speicher, CPU usw. abhängen. Auf einem leistungsfähigeren Server konnte ich sogar 2000 MBps sehen, was auf SSD-Ebene unrealistisch ist.

SSD kann sogar ohne O_SYNC-Flag besser als HDD funktionieren, während die Schreibvorgänge periodisch auf die Platte geleert werden, da dies ein vernünftiges Modell für die IO-Anwendung oben wäre. Ich kann meine Zahlen mit dieser Analyse teilen, falls jemand interessiert ist.

Entschuldigung für eine andere Tangente mit meiner ursprünglichen Frage. Aber es war trotzdem ein gutes Lernen. Daher dachte ich daran, meine Antwort hier zu posten.

Verwandte Themen