DD-Skript mit Timings

DD-Skript mit Timings

Ich versuche, die beste Vorgehensweise für ein Skript zu finden, das Folgendes tut:

  1. Erstellen Sie ein Loop-Skript, das mit dd eine 10 GB große Datei erstellt und nach Abschluss die Datei entfernt. Anschließend wird der Vorgang 25 Mal wiederholt oder wenn STRG+C eingegeben wird, bevor das Skript beendet werden kann.
  2. Am Ende jeder Operation, also dd, dann rm, messen Sie die Zeit, damit wir genau wissen, wie lange dd und rm gedauert haben

Bisher denke ich ungefähr so:

for i in {1..25}
  do
    time sh -c "dd if=/dev/zero of=/user/home/test.img bs=10G count=1" >> /tmp/dd_timed.txt && time sh -c "rm -f /user/home/test.img" >> rm_timed.txt
done

Hat jemand eine bessere Lösung oder könnte das vielleicht ein wenig optimieren?

Antwort1

Ok, also so sieht es aus, als ob man das so hinbekommt. Sieht eklig aus, funktioniert aber:

#!/bin/bash
for i in {1..25}
do
{ time dd if=/dev/zero of=/home/user/test.img bs=1G count=10 oflag=direct >& / dev/null ; } 2>> /tmp/dd_timed.txt && { time rm /home/user/test.img >& /dev/null ;  } 2>> /tmp/rm_timed.txt
done

Antwort2

Es kann interessant sein, die Zeit zu vergleichen, die

time ( dd if=/dev/zero of=/tmp/test.img bs=1M count=1024; sync )

Und

time ( dd if=/dev/zero of=/tmp/test.img bs=1M count=1024 oflag=direct;sync )

Sie sollten dies einbeziehen sync, um die Zeit zu messen, die zum Abschluss des Schreibvorgangs auf dem Zielgerät benötigt wird.

Auf meinem Hauptcomputer ist es [15–20 %] schneller oflag=direct, wenn auf eine SATA-SSD geschrieben wird (wo /tmpsich meine befindet).


Es kann jedoch Probleme geben mit oflag=direct, siehe den folgenden Link,

Warum wird in „dd“ nicht immer „oflag=direct“ verwendet?

verwandte Informationen