Я запускаю следующую команду, чтобы скопировать 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 на одном конце, а не на другом.
Чтобы ответить на ваш исходный вопрос и сказать, улучшает ли сжатие пропускную способность или нет, вам сначала нужно выяснить, где находится узкое место.
Есть пять кандидатов на роль узкого места:
Глядя наверх на каждом компьютере, вы должны увидеть, есть ли процесс, связанный с затратами на передачу почти 100% процессорного времени. Если это так, это верный признак того, что ЦП на этом компьютере является узким местом.
Если OTOH вы видите команду dd на обоих концах, проводя много времени в D
состояние (что означает непрерывный сон), это указывает на то, что ввод-вывод на этом компьютере является узким местом.
Чтобы узнать, является ли сеть узким местом, посмотрите на netstat
вывод. Если сеть является узким местом, вы должны увидеть большую очередь отправки в источнике и пустую очередь приема в месте назначения.
Если и очередь отправки, и очередь приема велики, это означает, что узкое место находится в месте назначения. Если оба пустые, это означает, что узкое место находится в источнике.
Если копия без сжатия приводит к возникновению узкого места в сетевом подключении, сжатие, вероятно, повысит производительность. Если узкое место было где-то еще, сжатие вряд ли поможет. Если время процессора, затрачиваемое на шифрование и дешифрование данных, было узким местом в первую очередь, сжатие может снизить производительность, если только данные не являются очень избыточными и не имеют высокой степени сжатия.
Пропускная способность может меняться со временем по ряду причин, это может привести к изменению местоположения узкого места, когда вы пытаетесь его найти. Сжатие, вероятно, вызовет гораздо больше вариаций пропускной способности из-за вариаций степени сжатия, что является наиболее вероятным объяснением того, что вы видите.
Но пропускная способность может отличаться по многим другим причинам, в том числе: