- Вопрос или проблема
- Ответ или решение
- Почему iperf показывает гигабитную скорость, а scp — нет?
- 1. Разные подходы к передаче данных
- 2. Проверка аппаратного ускорения шифрования
- 3. Альтернативы для передачи без шифрования
- 4. Английские и другие протоколы передачи
- 5. Анализ сетевой производительности
- Заключение
Вопрос или проблема
ОС на обоих серверах – Debian 12.
На сервере A:
iperf -s
На сервере B:
iperf -c server-a
Результат – 940 Мбит/с
Пытаюсь скопировать файл через scp с сервера B на сервер A:
scp test.img server-a:/mnt/test
Результат – 45 МБ/с. Не так плохо, но и не идеально. То же самое с rsync.
Скорость чтения диска на сервере B кажется нормальной:
dd if=test.img of=/dev/null bs=1M iflag=direct status=progress
Результат – 400 МБ/с без кэша.
Скорость записи диска на сервере A тоже кажется нормальной:
dd if=/dev/zero of=test.img bs=1M count=4000 oflag=direct status=progress
Результат – 200 МБ/с даже без кэша.
У меня нет другого трафика в сети. Я могу постоянно запускать тест iperf и получать один и тот же результат.
Я ожидал бы увидеть, что файл копируется со скоростью 117,5 МБ/с.
Как мне получить полную скорость от моей гигабитной сети?
scp
использует шифрование, iperf
передает обычный текст. Если один из ваших серверов не поддерживает шифрование HW AES, пропускная способность будет серьезно ограничена. Если вам не важно шифрование, вы можете просто использовать rsync
(напрямую без SSH) или даже nc
(netcat).
Ответ или решение
Почему iperf показывает гигабитную скорость, а scp — нет?
Когда вы сталкиваетесь с ситуацией, в которой iperf демонстрирует высокую пропускную способность сети, но при этом скорость копирования файлов через scp значительно ниже, это может вызывать вопросы. Давайте разберем, что происходит, и какие факторы могут влиять на данные.
1. Разные подходы к передаче данных
iperf — это инструмент, предназначенный для тестирования пропускной способности сети, который отправляет данные в открытом виде, без шифрования или дополнительной обработки. В то же время как scp (Secure Copy Protocol) использует SSH для безопасной передачи данных, что подразумевает больше нагрузку на процессор из-за шифрования. Это может существенно снижать общую скорость передачи, особенно если ваши серверы не поддерживают аппаратное ускорение шифрования.
2. Проверка аппаратного ускорения шифрования
Вы можете проверить, поддерживают ли ваши процессоры аппаратное ускорение для AES (Advanced Encryption Standard). На сервере выполните следующую команду:
cat /proc/cpuinfo | grep aes
Если ваша CPU поддерживает AES, вы увидите соответствующую запись. В противном случае программное шифрование будет значительным узким местом для производительности.
3. Альтернативы для передачи без шифрования
Если использование scp не является обязательным, и вы готовы обойтись без шифрования для ваших данных, вы можете рассмотреть использование rsync без SSH или даже netcat (nc). Оба метода позволяют передавать файлы по сети, избегая накладных расходов на шифрование.
Пример использования netcat для передачи файла:
На сервере A запустите:
nc -l -p 12345 > /mnt/test/test.img
На сервере B выполните:
cat test.img | nc server-a 12345
Это должно значительно увеличить скорость передачи, поскольку будучи в открытом формате, данные будут передаваться быстрее, чем в зашифрованном.
4. Английские и другие протоколы передачи
В дополнение к указанным методам, можно рассмотреть протоколы, такие как FTP или SFTP. Они также могут предложить различную производительность в зависимости от конфигурации и настроек.
5. Анализ сетевой производительности
Для получения более дет самого анализа можно использовать инструменты мониторинга сети, такие как nload или iftop. Эти инструменты помогут вам выявить какие-либо другие узкие места, которые могут влиять на скорость передачи данных.
Заключение
Скорость передачи данных через scp может значительно различаться от результатов iperf из-за наложенных ограничений шифрования и обработки данных. Проверка аппаратного ускорения, использование альтернативных методов передачи и анализ состояния сети помогут вам достичь более высокой производительности передачи данных через вашу гигабитную сеть. Обратите внимание на конфигурацию ваших серверов и протоколов передачи для оптимизации процесса, чтобы гарантировать максимальную эффективность.