Как я могу точно увидеть, сколько времени занимает запись файла на внешний носитель?

Я пытался измерить, сколько времени занимает чтение и запись во все доступное пространство в файловой системе FAT на 3,5-дюймовой дискете. Чтение не было большой проблемой. Пока файл не имеет прочитанный до теста, я могу просто запустить time cp /media/user/disk/file .. Однако запись оказывается более хлопотной.

Если я использую cp как с чтением, я получаю результат, близкий к нулю. Команда заканчивается, и привод продолжает запись в течение следующих 45 секунд или около того. Я также попытался использовать dd if=/dev/urandom of=/media/user/disk/file bs=1457664 count=1 для генерации случайных данных на лету, чтобы положить на диск, но с тем же результатом. Окончательное решение, которое я попробовал, было pv file > /media/user/disk/file, снова с тем же результатом, просто представлен по-другому. По крайней мере, я нашел заявленную скорость записи 192 МБ / с забавной.

Я сомневаюсь, что это имеет большое значение с чем-то вроде этого, но я использую Ubuntu 18.04 x64 MATE. Диск использует USB для питания и передачи данных.

1
задан 6 July 2018 в 17:58

2 ответа

Linux широко использует буферную память для чтения / записи файлов. Таким образом, запись на диск может казаться завершенной раньше, в то время как в действительности Linux продолжает фиксировать данные на диск. Чтобы сбросить буфер на диск, можно использовать команду «синхронизация». Таким образом, такая команда, как time sh -c "cp /media/user/disk/file .. && sync", даст лучшее представление о реальном времени, необходимом для полной записи копии на диск.

Конструкция с «sh» необходима, потому что время команды поддерживает только одну команду в качестве аргумента.

3
ответ дан 6 July 2018 в 17:58

Вы можете использовать time, чтобы измерить время, используемое самой командой cp для записи, и после этого для sync очистить буфер, и вне их для измерения общего времени. Смотрите следующие примеры.

Запись на жесткий диск, подключенный через SATA:

$ time bash -c 'time cp ubuntu-18.04-desktop-amd64.iso /media/multimed-2/ttt && time sync;echo -e "\n----------\ntotal time"'

real    0m23,207s
user    0m0,009s
sys 0m3,908s

real    0m1,328s
user    0m0,000s
sys 0m0,006s

----------
total time

real    0m24,538s
user    0m0,012s
sys 0m3,914s

Запись на USB 3 pendrive:

$ sudo time bash -c 'time -p cp ubuntu-18.04-desktop-amd64.iso /mnt/sd1/usbdata/ttt && time sync;echo -e "\n----------\ntotal time"'
[sudo] password for sudodus: 

real    0m55,390s
user    0m0,029s
sys 0m5,279s

real    0m17,595s
user    0m0,000s
sys 0m0,003s

----------
total time
real 72.98
user 0.03
sys 5.28

Обратите внимание, что гораздо больше времени для очистки буферов, когда запись в Pendrive, но также увеличивается время для команды копирования.

bc может рассчитать скорость копирования из размера файла и общего времени.

$ bc
bc 1.07.1
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006, 2008, 2012-2017 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
scale=2
1921843200/24.538/10^6
78.32
1921843200/72.98/10^6
26.33
quit
$ 
2
ответ дан 6 July 2018 в 17:58

Другие вопросы по тегам:

Похожие вопросы: