Frage

Was ist der Unterschied zwischen sequentiellem Schreiben und zufälligem Schreiben bei:- 1) diskbasierte Systeme 2) SSD [Flash Device] -basierte Systeme

Wenn die Anwendung etwas schreibt und die Informationen/Daten auf der Festplatte geändert werden müssen, wie wissen wir, ob es sich um ein sequentielles Schreiben oder ein zufälliges Schreiben handelt. Bis zu diesem Punkt kann ein Schreiben nicht als "sequentiell" oder "zufällig" unterschieden werden. Das Schreiben ist nur gepuffert und dann auf die Festplatte angewendet, wenn wir den Puffer spülen werden.

Bitte korrigieren Sie mich, wenn ich falsch liege.

War es hilfreich?

Lösung

Wenn Leute darüber reden sequentiell vs zufällig Schreiben in eine Datei, sie unterscheiden im Allgemeinen eine Unterscheidung zwischen dem Schreiben ohne Zwischensuche ("sequentiell"), im Vergleich zu einem Muster von Seek-Write-Seek-Write-Seek-Write usw. ("zufällig").

Die Unterscheidung ist in herkömmlichen Systemen auf diskbasierten Systemen sehr wichtig, bei denen jede Festplatte etwa 10 ms dauern wird. Das nacheinander geschriebene Schreiben von Daten auf dieselbe Festplatte dauert etwa 30 ms pro MB. Wenn Sie also nacheinander 100 MB Daten auf eine Festplatte schreiben, dauert es ungefähr 3 Sekunden. Wenn Sie jedoch 100 zufällige Schreibvorgänge von jeweils 1 MB durchführen, dauert dies insgesamt 4 Sekunden (3 Sekunden für das tatsächliche Schreiben und 10 ms*100 == 1 Sekunde für alle Suchen).

Wenn jedes zufällige Schreiben kleiner wird, zahlen Sie immer mehr eine Strafe für die Scheibe -Anstrengungen. In dem extremen Fall, in dem Sie 100 Millionen zufällige 1-Byte-Schreibvorgänge ausführen 11,57 Tage Ich suche es wert, zu tun! Der Grad, in dem Ihre Schreibvorgänge sequentiell im Vergleich zu zufälliger Zeit sind, kann die Zeit, die benötigt wird, um Ihre Aufgabe zu erfüllen, wirklich beeinflussen.

Die Situation ist ein bisschen anders, wenn es um Flash geht. Mit Blitz haben Sie keinen physischen Scheibenkopf, den Sie bewegen müssen. (Hier kommen die 10 ms die Kosten für eine traditionelle Festplatte). Flash -Geräte haben jedoch tendenziell große Seitengrößen (die kleinste "typische" Seitengröße beträgt etwa 512 Bytes gemäß Wikipedia, und 4K -Seitengrößen scheinen auch üblich zu sein). Wenn Sie also eine kleine Anzahl von Bytes schreiben, hat Flash immer noch Overhead, da Sie eine ganze Seite vorlesen, die von Ihnen geschriebenen Bytes ändern und dann die gesamte Seite zurückschreiben müssen. Ich kenne die charakteristischen Zahlen für den Flash von der Oberseite meines Kopfes nicht. Die Faustregel lautet jedoch, dass bei Flash, wenn jeder Ihrer Schreibvorgänge im Allgemeinen mit der Seitengröße des Geräts vergleichbar ist, nicht viel Leistungsunterschied zwischen zufälligen und sequentiellen Schreibvorgängen feststellen wird. Wenn jedes Ihrer Schreibvorgänge im Vergleich zur Seitenseitengröße klein ist, sehen Sie bei zufälligen Schreibvorgängen etwas Overhead.

Nun, für alle oben genannten ist es wahr, dass auf der Anwendungsschicht viel vor Ihnen versteckt ist. Es gibt Schichten im Kernel, Scheiben-/Flash-Controller usw., die beispielsweise in der Mitte Ihres "sequentiellen" Schreibens nicht offene Suche einführen können. In den meisten Fällen hat das Schreiben, dass "aussehen" in der Anwendungsschicht (keine Suche, viele kontinuierliche E/O) eine sequenzielle Leistung haben, während das Schreiben von "Aussehen" in der Anwendungsschicht das (im Allgemeinen schlechter) hat, dass "zufällig" aussieht. Zufällige Schreibleistung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top