3

Я получил два диска одной модели, которые подключены с помощью 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 ответа2

7

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

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

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

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

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

3

У меня была точно такая же проблема (на 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .