скрипт dd с таймингами

скрипт dd с таймингами

Пытаюсь найти наилучший подход к сценарию, который будет выполнять следующие действия:

  1. Создайте циклический скрипт, который создает файл размером 10 ГБ с помощью dd, а после завершения удаляет файл, а затем повторяет 25 раз или если нажать CTRL+C до того, как скрипт получит возможность завершить работу.
  2. В конце каждой операции, то есть dd, а затем rm, засеките время, чтобы точно знать, сколько времени заняли dd и rm.

Пока что я думаю примерно так:

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

У кого-нибудь есть лучшее решение или, может быть, можно немного подправить это?

решение1

Хорошо, похоже, вот способ сделать это. Выглядит отвратительно, но работает:

#!/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

решение2

Может быть интересно сравнить время, затраченное

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

и

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

Вам следует включить этот параметр syncдля измерения времени завершения записи на целевое устройство.

На моем основном компьютере он на [15–20%] быстрее oflag=directпри записи на SATA SSD (там, где /tmpнаходится мой).


Однако могут возникнуть проблемы oflag=direct, см. следующую ссылку,

Почему бы не использовать всегда «oflag=direct» в «dd»?

Связанный контент