команда "dd" выполняется в два раза медленнее, чем "cp"

receiver
Дата: 17.12.2009 16:48:16
Объясните, плз, почему команда "dd" выполняется в два раза медленнее, чем "cp"?

Копирую 2Gb файл

$ cp test newtest

$ dd if=test of=newtest

iostat в первом случае показывает скорость записи ~ 10Mb/sec и 25Mb/sec во втором.

Почему?
Журавлев Денис
Дата: 17.12.2009 17:03:31
receiver,

потому что по одному байту копируется

попробуйте указать размер блока
dd bs=64k
Мутаген
Дата: 17.12.2009 17:16:45
копируется по одному блоку (512 байт)
календаревед
Дата: 17.12.2009 17:44:09
receiver
"dd" в два раза медленнее, чем "cp"?

$ cp test newtest
$ dd if=test of=newtest

в первом случае показывает скорость записи ~ 10Mb/sec и 25Mb/sec во втором.


как ты определил, что в два раза медленнее? я вижу из твоей цитаты, что dd в 2,5 раза быстрее чем cp.
receiver
Дата: 17.12.2009 18:05:14
календаревед
receiver
"dd" в два раза медленнее, чем "cp"?

$ cp test newtest
$ dd if=test of=newtest

в первом случае показывает скорость записи ~ 10Mb/sec и 25Mb/sec во втором.


как ты определил, что в два раза медленнее? я вижу из твоей цитаты, что dd в 2,5 раза быстрее чем cp.


Запускал dd и cp на разных серверах, на внутренних дисках и на стойках сбрасывал значения
iostat -xM 5 100 > iostat<N>.txt
в файл. Естественно, математической точности нет. Разница примерно плавает от 1,5 до 2,5 раз.
календаревед
Дата: 17.12.2009 18:13:16
Ещё раз (уберём лишние буквы из цитаты)

автор
cp ...
dd ...
... в первом ... ~ 10Mb/sec и 25Mb/sec во втором.

25 / 10 = 2.5

Чем больше скорость, тем быстрее. У dd скорость в 2,5 раза больше чем у cp. Как ты определил, что dd медленнее?
receiver
Дата: 18.12.2009 12:25:13
календаревед
Ещё раз (уберём лишние буквы из цитаты)

автор
cp ...
dd ...
... в первом ... ~ 10Mb/sec и 25Mb/sec во втором.

25 / 10 = 2.5

Чем больше скорость, тем быстрее. У dd скорость в 2,5 раза больше чем у cp. Как ты определил, что dd медленнее?


Писал под дулом автомата. Ошибся. Рука дрогнула.

Правда, это не помешало другим авторам сразу понять, что тормозит именно dd, а не cp! : )
--null--
Дата: 18.12.2009 15:51:37
receiver, а Вы strace посмотрите оба примера. Будет видно, что dd действительно по дефолту юзает 512 байт на read, а cp берёт бОльший буфер и делает меньше циклов чтения-записи.
receiver
Дата: 21.12.2009 22:18:40
Да, действительно, при уменьшении размера буфера до 32, а затем и до 8 байт я получил
время копирования ~ 30 минут.