¿Qué limita el rendimiento de scp?

13

Tengo dos máquinas Debian Linux conectadas a través de LAN de 1 Gbit. Puedo medir esto con una transferencia de archivos HTTP sin procesar con la wgetque se obtienen alrededor de 100 MB / s en cualquier dirección.

Cuando ahora lo uso scp, el máximo sin compresión que obtengo es de alrededor de 15 MB / s . Habilitar la compresión con la -Cbandera me da, dependiendo de los contenidos, hasta 50 MB / s .

Aún así, parece que se desperdicia mucho ancho de banda aquí. No me molesté durante mucho tiempo hasta que realmente tuve que pensar en algunas transferencias de archivos de registro muy grandes y me di cuenta de lo extrañamente lenta que scpes. Es natural para mí usarlo scp, incluso en el entorno de la empresa, porque toda la infraestructura está configurada para ello.

¿Qué limita tanto el rendimiento de scp? ¿Está vinculado a la CPU debido al cifrado? Cuando uso htopparece que no hace uso de CPU multinúcleo, solo una de las cuatro CPU está al máximo.

¿Hay alguna manera de aumentar el rendimiento? Tengo servidores HTTP y samba disponibles, pero para mover archivos entre máquinas Linux usualmente solo uso SSH, esa es la forma en que crecí con él. Pero esto ahora me hace pensarlo, parece que necesito considerar otras formas de transferencia para grandes cantidades de datos.

HTTP solo se usa para aplicaciones específicas en PHP / Java / lo que sea y samba se usa por algunas razones especiales por las que necesitamos acceso desde máquinas Windows.

marca
fuente
La respuesta de JooMing funcionó para mí fabulosa, pero la -Copción de compresión lo hizo más lento (21 MB / s en lugar de 112 MB / s). Así que por favor cuídate -C.
matemáticas

Respuestas:

7

Probablemente sea el cifrado. Puede probar scp con diferentes cifrados, por ejemplo:

scp -c arcfour src dest

Consulte la página del manual ssh_config para ver los cifrados disponibles. RC4 (arcfour) es un cifrado rápido, pero probablemente no tan seguro como algunas alternativas.

JooMing
fuente
Cabe señalar que el uso de RC4 no es seguro y las comunicaciones pueden interrumpirse fácilmente.
Evan Darwin
6

Parte de esto puede tener que ver con la implementación interna de OpenSSH. Eche un vistazo a HPN-SSH para obtener una explicación decente por una razón de los cuellos de botella y los parches para OpenSSH que pueden resolverlo (si está dispuesto a parchear y reconstruir desde la fuente).

James Sneeringer
fuente