rsync медленное копирование с одного диска на другой

Я получил два диска одной модели, которые подключены с помощью SATA.

При тестировании скорости чтения с помощью hdparm -t /dev/sdXСкорости около 160MB/s возвращаются. При тестировании скорости записи с использованием dd if=/dev/zero of=testfile bs=1M count=500 conv=fdatasyncСкорости около 140MB/s возвращаются.

Однако при копировании одного 10GB-файла с помощью rsync --progress /mnt/hd1/file /mnt/hd2/fileСкорость записи только о 35MB/s,

Почему это так медленно? Как я могу сделать это быстрее?

2 ответа

Решение

Согласно многим сайтам, которые я обнаружил при исследовании этой проблемы (например, этот), это просто нормально, поскольку узким местом rsync обычно является мощность процессора.

Результаты с dd и cp были близки к скоростям, которые я изначально оценивал. Похоже, что двухъядерный 2,2 ГГц просто недостаточно для rsync с высокой скоростью.

В ходе дальнейших исследований я также узнал об этом:

Правильно, rsync не имеет возможности полностью отключить контрольную сумму после передачи. Я реализовал патч для rsync 2.6.9, который добавляет опцию --trust-append, которая ограничивает контрольную сумму после передачи добавленной частью, а не всем файлом. Патч прилагается. Это должно быть достаточно, но если вы действительно хотите полностью отключить контрольную сумму, просто закомментируйте оставшиеся вызовы sum_update в match.c и receive.c.

Rsync всегда проверяет суммы всего файла, что занимает много времени. Используя вышеупомянутый патч, мне удалось увеличить скорость rsync примерно до 90 МБ / с. Все еще не велик, но намного лучше чем прежде. К сожалению, патч так и не попал в rsync-trunk.

У меня была точно такая же проблема (на Linux), то есть: 35BM/s.

Оказывается, rsync привязан к процессору И не запускает процессор по требованию, поэтому процессор зависает на самой низкой скорости (800 МГц в моем случае против 3000 МГц)

Вы можете проверить с помощью:

cat / proc / cpuinfo | grep МГц

Исправление заключается в настройке регулятора ЦП.

echo "70"> / sys / devices / system / cpu / cpufreq / ondemand / up_threshold

Чтобы сделать его постоянным, поместите его в /etc/rc.local

Для объяснения смотрите: http://random-linux-stuff.blogspot.co.nz/2013/01/boost-performance-of-ondemand-cpu.html

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