¿Por qué mi rsync es tan lento?

42

Mi computadora portátil y mi estación de trabajo están conectadas a un conmutador Gigabit. Ambos ejecutan Linux. Pero cuando copio archivos con rsync, funciona mal.

Tengo unos 22 MB / s. ¿No debería obtener teóricamente unos 125 MB / s? ¿Cuál es el factor limitante aquí?

EDITAR: Realicé algunos experimentos.

Escribe el rendimiento en la computadora portátil

La computadora portátil tiene un sistema de archivos xfs con cifrado de disco completo. Utiliza el aes-cbc-essiv:sha256modo de cifrado con una longitud de clave de 256 bits. El rendimiento de escritura en disco es 58.8 MB / s .

iblue@nerdpol:~$ LANG=C dd if=/dev/zero of=test.img bs=1M count=1024
1073741824 Bytes (1.1 GB) copied, 18.2735 s, 58.8 MB/s

Lea el rendimiento en la estación de trabajo

Los archivos que copié están en un software RAID-5 sobre 5 discos duros. Encima de la incursión hay un lvm. El volumen en sí está encriptado con el mismo cifrado. La estación de trabajo tiene una CPU FX-8150 que tiene un conjunto de instrucciones AES-NI nativo que acelera el cifrado. El rendimiento de lectura del disco es de 256 MB / s (el caché estaba frío).

iblue@raven:/mnt/bytemachine/imgs$ dd if=backup-1333796266.tar.bz2 of=/dev/null bs=1M
10213172008 bytes (10 GB) copied, 39.8882 s, 256 MB/s

Rendimiento de la red

Corrí iperf entre los dos clientes. El rendimiento de la red es de 939 Mbit / s

iblue@raven $ iperf -c 94.135.XXX
------------------------------------------------------------
Client connecting to 94.135.XXX, TCP port 5001
TCP window size: 23.2 KByte (default)
------------------------------------------------------------
[  3] local 94.135.XXX port 59385 connected with 94.135.YYY port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.09 GBytes   939 Mbits/sec
iblue
fuente
3
rsync: // protocolo o túnel sobre SSH? Hay limitaciones de rendimiento muy definidas en este último ¹ .
Ephemient

Respuestas:

18

Otra forma de mitigar el uso elevado de la CPU, pero manteniendo la funcionalidad de rsync, es pasar de rsync / SSH a rsync / NFS. Puede exportar las rutas que desea copiar a través de NFS y luego usar rsync localmente desde el montaje NFS a su ubicación de destino.

En una prueba desde un disco de red WD MyBook Live, uno o más rsyncs del NAS en una red Gigabit hacia 2 discos USB locales no copiarían más de 10 MB / s (CPU: 80% usr, 20% sys), después de exportar NFS y rsyncing localmente desde el recurso compartido NFS a ambos discos Obtuve un total de 45MB / seg (maximizando ambos discos USB2) y poco uso de CPU. La utilización del disco cuando se usa rsync / SSH fue de aproximadamente el 6% y el uso de rsync / NFS fue más cercano al 24%, mientras que ambos discos USB2 estaban cerca del 100%.

Por lo tanto, efectivamente trasladamos el cuello de botella de la CPU NAS a ambos discos USB2.

Dag Wieers
fuente
44
Sin embargo, tenga en cuenta que NFS no ofrece seguridad (es decir, cifrado).
WhyNotHugo
Esto funcionó muy bien! Ahora obtengo velocidades de gigabit casi completas cuando solo obtenía ~ 100 Mb / s antes.
PHLAK
1
¿Podría indicar cómo usar rsync / NFS? Estoy tratando de transferir 8Tb entre 2 unidades MyCloud y me lleva una eternidad con rsync sobre ssh (4MB / seg)
FMaz008
26

Las razones pueden incluir: compresión, cifrado, la cantidad y el tamaño de los archivos que se copian, las capacidades de E / S de disco de los sistemas de origen y destino, la sobrecarga de TCP ... Todos estos factores pueden influir en el tipo de transferencia que está realizando.

Publique el comando rsync que está utilizando y proporcione detalles sobre las especificaciones de ambas computadoras.


Editar: el cifrado suele ser un factor limitante en las velocidades de rsync. Puede ejecutar con ssh y un cifrado de cifrado más ligero comoarcfour

Algo como: rsync -e "ssh -c arcfour"

O puede usar un rsync / ssh modificado que puede deshabilitar el cifrado. Ver hpn-ssh: http://psc.edu/networking/projects/hpn-ssh

Pero, de nuevo, su computadora portátil tiene un disco lento en comparación con su estación de trabajo. Las escrituras pueden estar bloqueadas y esperando que la E / S vaya a su computadora portátil. ¿Cuáles son sus expectativas reales de rendimiento?

ewwhite
fuente
1
Las computadoras portátiles a menudo tienen discos más lentos (7200 rpm - 5400 rpm) porque usan menos energía. Esto podría ser fácilmente su factor limitante dependiendo de exactamente lo que está haciendo el rsync.
Ladadadada
1
Gracias. Desde rsyncningun disco encriptado dm-crypt conectado a un procesador de átomos a una caja NAS ARM ecryptfs , esto cambió mi velocidad de transferencia de 4MiB / sa 6MiB / s. rsync --protocol=29 -auh --progress /mnt/esata/pics/ -e "ssh -c arcfour" diskstation:/volume1/picsMejor que nada.
Sebastian
Esta respuesta Pasar de rsync -azP a rsync -aPe "ssh -c arcfour" aumentó la velocidad de transferencia de 4MB / Sec a 25MB / Sec entre dos unidades MyCloud Mirror. La CPU de la unidad receptora ahora está al máximo. (creo que esto significa que estoy transfiriendo tan rápido como la unidad puede escribir datos)
FMaz008
10

Después de algunas pruebas más, finalmente encontré la respuesta yo mismo. rsyncutiliza túneles sobre ssh por defecto. La criptografía lo hace lento. Así que necesitaba sortear esas cosas criptográficas.

Solución 1: configurar un servidor rsync

Para usarlo a través del rsyncprotocolo, debe configurar un servidor rsyncd. Había una /etc/init.d/rsyncsecuencia de comandos en mi computadora portátil, así que supuse que se estaba ejecutando rsyncd. Estaba equivocado. /etc/init.d/rsync startexiste en silencio, cuando rsync no está habilitado en /etc/default/rsync. Entonces también tienes que configurarlo /etc/rsyncd.conf, lo cual es un fastidio.

Si logra todo esto, debe usarlo rsync file.foo user@machine::directory. Tenga en cuenta que hay dos puntos .

Solución 2: servidor rsh de la vieja escuela

Sin embargo, la configuración fue demasiado complicada para mí. Así que acabo de instalar y rsh-serveren mi computadora portátil. Invocar rsync en la estación de trabajo con -e rexecluego usa rsh en lugar de ssh. Lo que luego casi duplicó el rendimiento a 44.6 MB / s , que aún es lento. Los rebotes de velocidad entre 58 MB / s y 33 Mb / s , lo que indica que puede haber algunos problemas de control de tampón o de congestión. Pero eso está más allá del alcance de esta pregunta.

iblue
fuente
2
Usamos rsync ampliamente aquí y usualmente obtenemos velocidad de interfaz completa a menos que atraviese millones de archivos 4K. No creo que la criptografía sea el problema a menos que estés usando un hardware realmente decrépito.
Magellan
¿Un Intel Core2 Duo T8100 en un ThinkPad R61 cuenta como hardware seriamente decrépito? Si no, ¿por qué rsync sobre ssh es más lento que rsync sobre rsh?
iblue
55
El cifrado suele ser un factor limitante en las velocidades de rsync, junto con la cantidad de archivos. Los enfoques estándar para mejorar esto son ejecutar rsync con un cifrado de cifrado más ligero como rsync -e "ssh -c arcfour"probar un rsync / ssh modificado que puede deshabilitar el cifrado. Ver hpn-ssh: psc.edu/networking/projects/hpn-ssh
ewwhite
2

Estas son preguntas y respuestas muy antiguas, pero falta algo importante: si está copiando datos ya comprimidos o cifrados, desactive la compresión.

Si sus datos no están comprimidos ni encriptados, ¡solo desea comprimirlos una vez! Rsync comprime con -z, ssh comprime con -C (puede ser por defecto). No he probado cuál es mejor ya que mis datos están comprimidos.

Mientras estoy en eso, puede desactivar el reenvío X y la asignación TTY, lo que resulta en:

rsync -avh -e "ssh -x -T -c arcfour -o Compression=no" $src $dst

Por último, asegúrese (por ejemplo, de usar iptraf) que realmente está usando la interfaz de red que cree que está usando. Para mi gran sorpresa, noté que en mi OSX el ssh saliente se vinculaba a la IP en la interfaz saliente predeterminada en lugar de a la IP en la interfaz en la que se suponía que se enrutaban los paquetes. Mi conexión cruzada GB directa entre dos computadoras portátiles también conectadas por WiFi no se estaba utilizando. Después de la investigación, se debió al uso de 169.254 / 16, que la Mac pone en todas las interfaces, y la computadora de destino responde a las solicitudes de ARP a pesar de que la solicitud entró en una interfaz diferente.

Ley29
fuente
Opciones válidas, pero encuentro que -x -T y -o Compresión = no solo tuvieron pocos efectos en la velocidad de transferencia.
FMaz008
44
También vale la pena mencionar que OpenSSH 6.7 desactiva arcfour.
bparker
¡Es una lástima @bparker! ¿Sabemos cuál de los cifrados disponibles restantes es el más ligero en la CPU?
Law29