Назад | Перейти на главную страницу

Команда dd передается по конвейеру через gzip и ssh все быстрее и быстрее по мере выполнения dd

Я запускаю следующую команду, чтобы скопировать LVM с одного хоста на другой:

dd if=/dev/vg_1/lv1 conv=noerror,sync bs=4M | gzip | ssh user@ip 'gzip -d | dd of=/dev/vg_2/lv1 bs=4M'

Начнем с того, что около часа назад у меня была скорость около 11 МБ / с. Со временем скорость передачи данных выросла примерно до 34,4 МБ / с и продолжает расти с постоянной скоростью.

Мне очень любопытно узнать, почему.

Я думаю, что копируемый LVM очень большой, но на самом деле только небольшая его часть - это данные. В результате, возможно, большие блоки данных будут заполнены 0. Сделает ли это сжатие gzip более эффективным?

Команду можно упростить, исключив два gzip команды. Если сжатие полезно в вашем случае, гораздо проще сжать данные в пути, указав -C аргумент к ssh команда, она также менее подвержена ошибкам, поскольку вы случайно не используете gzip на одном конце, а не на другом.

Чтобы ответить на ваш исходный вопрос и сказать, улучшает ли сжатие пропускную способность или нет, вам сначала нужно выяснить, где находится узкое место.

Есть пять кандидатов на роль узкого места:

  1. Ввод / вывод на источнике
  2. CPU на исходнике
  3. Пропускная способность сети
  4. CPU на цели
  5. Ввод / вывод на цели

Глядя наверх на каждом компьютере, вы должны увидеть, есть ли процесс, связанный с затратами на передачу почти 100% процессорного времени. Если это так, это верный признак того, что ЦП на этом компьютере является узким местом.

Если OTOH вы видите команду dd на обоих концах, проводя много времени в D состояние (что означает непрерывный сон), это указывает на то, что ввод-вывод на этом компьютере является узким местом.

Чтобы узнать, является ли сеть узким местом, посмотрите на netstat вывод. Если сеть является узким местом, вы должны увидеть большую очередь отправки в источнике и пустую очередь приема в месте назначения.

Если и очередь отправки, и очередь приема велики, это означает, что узкое место находится в месте назначения. Если оба пустые, это означает, что узкое место находится в источнике.

Если копия без сжатия приводит к возникновению узкого места в сетевом подключении, сжатие, вероятно, повысит производительность. Если узкое место было где-то еще, сжатие вряд ли поможет. Если время процессора, затрачиваемое на шифрование и дешифрование данных, было узким местом в первую очередь, сжатие может снизить производительность, если только данные не являются очень избыточными и не имеют высокой степени сжатия.

Пропускная способность может меняться со временем по ряду причин, это может привести к изменению местоположения узкого места, когда вы пытаетесь его найти. Сжатие, вероятно, вызовет гораздо больше вариаций пропускной способности из-за вариаций степени сжатия, что является наиболее вероятным объяснением того, что вы видите.

Но пропускная способность может отличаться по многим другим причинам, в том числе:

  • Фрагментация на нижележащих носителях
  • Плохие сектора на носителе замедляют передачу данных
  • Физические свойства носителя, вызывающие изменение пропускной способности в зависимости от местоположения на носителе.
  • Нагрузка на компьютер из-за других несвязанных процессов
  • Различия в доступной емкости сети