¿Por qué rsync se bifurca? ¿Y por qué uno de estos procesos bifurcados está casi inactivo (como se ve en iotop)?

11

Esto se refiere al asunto aquí expuesto y también estoy experimentando lo mismo.

En uno de mis servidores, ejecuté un rsync, para hacer una copia de seguridad de un directorio enorme (tamaño superior a 300 Gb) en un disco diferente, montado en la misma máquina. El directorio que se rsynced contiene miles de directorios y archivos. Emití un solo comando rsync, con 'nohup' y luego lo empujé en segundo plano usando el comando '&'. El comando completo dado en el shell bash remoto (usando masilla) fue:

nohup rsync -avh /some/local/dir /backup/ >> /opt/rsync.dec22.log &

Luego, solo para verificar a qué velocidad se copiaban los datos, utilicé el comando 'iotop' y descubrí que había 3 rsync ejecutándose con los mismos parámetros. Al buscar encontré el enlace de arriba que dice que es normal.

Pero haciendo un iotop para monitorear solo esos y los únicos procesos rsync que se ejecutan en el sistema, veo que un proceso está leyendo archivos, uno los está escribiendo, pero uno está inactivo. El comportamiento parece ser bueno, ya que un proceso hace solo una cosa a la vez, pero ¿qué está haciendo el tercer proceso (visto como el medio en la imagen a continuación)?

El comando iotop que había usado era:

iotop -p22250 -p22251 -p22252

Aquí está la captura de pantalla para la salida del comando iotop:

Salida del comando iotop que muestra el proceso 3 rsync

Pregunto por esta razón porque uso mucho rsync y quiero entender su comportamiento para obtener un beneficio a largo plazo. Incluso leí el manual, pero no dice nada de la bifurcación.

Gautam Somani
fuente

Respuestas:

9

rsync es un programa diseñado para ser cliente y servidor. El servidor lee y el cliente escribe. Imagine que, en lugar de una sola computadora, tuviera computadoras a través de la red, estoy seguro de que es mucho más claro si piensa de esa manera.

Luego está el controlador. Como las operaciones de E / S tienden a presentar cierto riesgo, un problema de E / S no debería causar un bloqueo total o un bloqueo. Por lo tanto, crea una bifurcación para cada conexión y se ubica en segundo plano.

Gruñón
fuente
Gracias por el conocimiento Lo entiendo en la vista de computadoras separadas en la red, cada computadora haciendo una parte del trabajo en sincronía. Pero, ¿puede referirme también a la documentación de comportamiento donde puedo leer más sobre rsync y también sobre el concepto? También me gustaría saber cómo pasan los datos leídos por el proceso de lectura al proceso de escritura. ¿Se está utilizando el concepto de IPC?
Gautam Somani
3
@GautamSomani La página oficial de rsync será su mejor fuente para tal. rsync.samba.org Además, la forma en que funciona está disponible aquí: rsync.samba.org/how-rsync-works.html Si desea aún más detalles, probablemente tenga que profundizar en la fuente.
Gruñón
El autor original lanza rsync localmente. No se conecta a rsyncd, por lo que no hay forma de que el demonio bifurque a su hijo. Y no hay conexiones de red. Por lo tanto, todavía es una pregunta por qué rsync se bifurca cuando se ejecuta localmente. La respuesta es engañosa e incorrecta.
drookie
@drookie No importa si es local o está en la red. Funciona de la misma manera. También explica este comportamiento en el documento oficial que vinculé justo encima de su comentario, que también dice, "ya sea dentro de una transferencia local, a través de un shell remoto o mediante un socket de red".
Gruñón