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