Was passiert im Befehl?
sudo dd if=/dev/zero of=/dev/null bs=500M count=1.
Wohin gehen eigentlich die Nullen und was passiert im Allgemeinen? Die Geschwindigkeit beträgt 905 MB / s
Wenn ich auf eine RAM-Disk fahre, beträgt die Geschwindigkeit nur 388 MB / s. Und wenn ich dd
auf meiner Festplatte ist die Geschwindigkeit nur 63,2 MB / s
/dev/null
ist ein gutes Ziel zum Testen / Timing lesen Operationen./dev/zero
ist eine gute Quelle zum Testen / Timing schreiben Operationen. Das Kombinieren dieser Quelle und dieses Ziels in einem Vorgang ist wenig sinnvoll. Nicht einmal sicher, ob dies eine aussagekräftige Overhead-Nummer liefert.Antworten:
/dev/zero
liefert beim Lesen einen endlosen Strom von null Bytes. Diese Funktion wird vom Kernel bereitgestellt und erfordert keine Speicherzuweisung. Alles schreibt an/dev/null
werden lautlos fallen gelassen.Infolgedessen, wenn Sie das ausführen
dd
erzeugt das System 500 Megabyte in Null-Bytes, die einfach verworfen werden. Mit Ausnahme eines temporären Puffers werden vor, während oder nach dieser Operation keine Daten gespeichert.Die Geschwindigkeit der Übertragung von
/dev/zero
zu/dev/null
wird in erster Linie von der Geschwindigkeit Ihres Prozessors und den relevanten Systemaufrufen bestimmt. (In Ihrem Fall ist der Puffer 500 MB groß, und daher testet der Vorgang auch die Geschwindigkeit Ihres Speichers.)quelle
Ich werde diesen Befehl für Sie übersetzen:
Doppelte Daten (
dd
) aus der Eingabedatei (if
) von/dev/zero
(nahezu unbegrenztes Angebot von0
's) in Ausgabedatei (of
) von/dev/null
(virtuelles Doline) mit Blöcken von 500M Größe (bs
= Blockgröße) und wiederhole dies (count
) nur einmal (1
).Im Allgemeinen sollte dieser Befehl nur die Speicher- und Busgeschwindigkeit messen. Es kann jedoch fehlschlagen, wenn Sie nicht über 500 MB RAM verfügen. In gewissem Sinne wird damit auch implizit festgelegt, wie schnell Ihr Betriebssystem große Speicherbereiche zuweisen kann.
quelle
/ dev / null ist ein schwarzes Loch. Es ist nicht genau zum Testen normaler Schreibvorgänge, da es nicht wie eine normale Datei auf die Festplatte schreibt. Anstatt den Kopf auf die Festplatte schreiben zu lassen, werden die Daten sofort beim Schreiben auf das Gerät gelöscht, sodass sie immer schneller sind als normale lokale Schreibvorgänge.
/ dev / zero ist ähnlich für liest. Es ist keine Kopfbewegung zum Lesen erforderlich. Es gibt nur eine unbegrenzte Anzahl von Nullzeichen. Daher wird immer schneller gelesen als bei jedem lokalen Lesevorgang.
Mit anderen Worten, dies ist wie ein Test in einer Leere und gibt kein genaues Bild darüber, was normale lokale Lese- und Schreibvorgänge ergeben sollten.
quelle
/dev/null
ist nirgendwo; darauf geschriebene Daten werden einfach gelöscht.Ihre Ramdisk hat ein Dateisystem, das sie verwenden muss.
dd
muss einen Dateisystemeintrag erstellen und nach den Regeln des Dateisystems schreiben. Außerdem verwendet Ihr Betriebssystem gleichzeitig Ihren Speicher für andere Dinge, sodass Ihre Schreiboperation das erhält, was übrig bleibt.Nicht-SSD-Festplatten sind einfach nur langsam, das ist auch richtig.
quelle