51 votos

¿Por qué mi rsync tan lento?

Mi Laptop y mi estación de trabajo están conectadas a un Switch Gigabit. Ambos se ejecutan Linux. Pero cuando copio los archivos con rsync, se realiza mal.

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

EDIT: he llevado a cabo algunos experimentos.

El rendimiento de la escritura en la computadora portátil

El portátil tiene un sistema de ficheros xfs con cifrado de disco completo. Se utiliza aes-cbc-essiv:sha256 de cifrado modo con 256 bits de longitud de la clave. Rendimiento de escritura de 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

El rendimiento de la lectura en la estación de trabajo

Los archivos que se copian en un software RAID-5 más de 5 discos Duros. En la parte superior de la raid es un lvm. El volumen está cifrada con el mismo sistema de cifrado. La estación de trabajo tiene un FX-8150 cpu que tiene un nativo AES-NI con el conjunto de instrucciones que acelera el cifrado. Disco de rendimiento de lectura es de 256 MB/s (caché era 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

El 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

27voto

Tina Puntos 21

Las razones pueden incluir: compresión, cifrado, el número y el tamaño de los archivos de la copia, de su origen y de destino de los sistemas de e/S de disco capacidades, la sobrecarga TCP... todos Estos son factores que pueden influir en el tipo de transferencia que está llevando a cabo.

Por favor, publique el comando rsync está utilizando y proporcionar detalles sobre las especificaciones de ambos equipos.


Edit: el Cifrado es a menudo un factor limitante en rsync velocidades. Puede ejecutar con ssh y un peso ligero sistema de cifrado como arcfour

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

O puede utilizar una versión modificada de rsync/ssh que puede deshabilitar el cifrado. Ver hpn-ssh: http://psc.edu/networking/projects/hpn-ssh

Pero, de nuevo, el portátil tiene una unidad lento en comparación a su estación de trabajo. Escribe puede ser bloqueado y a la espera de I/O de ir a su computadora portátil. ¿Cuáles son sus reales expectativas de rendimiento?

21voto

Dag Wieers Puntos 86

Otra forma de mitigar el alto uso de la CPU, pero aún así mantener la funcionalidad de rsync, es pasar de rsync/SSH a rsync/NFS. Puede exportar las rutas de acceso que desea copiar a través de NFS y, a continuación, utilizar rsync a nivel local, desde el montaje de NFS a su ubicación de destino.

En una prueba de un WD MyBook Live disco de red, uno o más rsyncs desde el NAS en una red Gigabit hacia 2 locales discos USB no copiar más de 10 mb/seg (CPU: 80% usr, 20% sys), después de la exportación a través de NFS y sincronizándose a nivel local, desde el recurso compartido de NFS para ambos discos me dieron un total de 45 MB/s (máximo tanto USB2 discos) y poco uso de CPU. La utilización del disco cuando se utiliza rsync/SSH fue de alrededor de 6% y el uso de rsync/NFS estaba más cerca de 24%, mientras que las dos USB2 discos, donde cerca de 100%.

Así que efectivamente se movió el cuello de botella de la NAS de la CPU para ambos USB2 discos.

11voto

iblue Puntos 295

Después de algunas pruebas más, por fin he encontrado la respuesta a mí mismo. rsync utiliza el túnel a través de ssh por defecto. El crypto hace que sea lento. Así que necesitaba para evitar que la cripto cosas.

Solución 1: Configuración de un servidor rsync

Para utilizarlo a través del protocolo rsync, usted tiene que configurar un rsyncd servidor. Hubo un /etc/init.d/rsync script en mi portátil, así que supuse, rsyncd se estaba ejecutando. Yo estaba equivocado. /etc/init.d/rsync start existe en silencio, cuando rsync no está habilitado en /etc/default/rsync. Entonces usted también tendrá que configurar en /etc/rsyncd.conf, que es un dolor.

Si usted consigue todo esto hecho, usted tiene que utilizar rsync file.foo user@machine::directory. Por favor, tenga en cuenta, que no hay dos signos de dos puntos.

Solución 2: de la Vieja escuela rsh-servidor

Sin embargo, la configuración era complicado para mí. Lo acabo de instalar y rsh-server en mi portátil. La invocación de rsync en la estación de trabajo con -e rexec , a continuación, utiliza rsh en lugar de ssh. Que luego casi se duplicó el rendimiento a 44.6 MB/s. Lo que es aún lento. La velocidad rebota entre los 58 MB/s y de 33 MB/s, lo que indica que puede haber un buffer o de control de congestión problemas. Pero eso es más allá del alcance de esta pregunta.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: