Pourquoi rsync génère-t-il plusieurs processus pour moi?

22

J'utilise l'instruction cron suivante pour sauvegarder d'un dossier vers un autre dossier sur la même machine:

19 21 * * * root  rsync -ac --delete /source/folder /dest/folder

Quand j'utilise pstree, je vois les trois processus cron forked

 ├─cron───cron───rsync───rsync───rsync

Et ps

 9972 ?        Ds     1:00 rsync -ac --delete /source/folder /dest/folder
 9973 ?        S      0:29 rsync -ac --delete /source/folder /dest/folder
 9974 ?        S      0:09 rsync -ac --delete /source/folder /dest/folder

Pourquoi trois processus? Puis-je me limiter à un seul?

Ryan
la source
Pourquoi t'en préoccupes-tu? Cela cause-t-il des problèmes de performances?
EEAA
2
Oui, impact sur les performances de mon serveur et ils utilisent pas mal de ressources
Ryan

Réponses:

24

http://rsync.samba.org/how-rsync-works.html

Rsync est fortement canalisé. Cela signifie qu'il s'agit d'un ensemble de processus qui communiquent de manière (largement) unidirectionnelle. Une fois la liste de fichiers partagée, le pipeline se comporte comme ceci:
générateur → expéditeur → récepteur

La sortie du générateur est entrée pour l'émetteur et la sortie de l'émetteur est entrée pour le récepteur. Chaque processus s'exécute indépendamment et n'est retardé que lorsque les pipelines sont bloqués ou en attente de ressources d'E / S disque ou de ressources CPU.

Vous exécutez un rsync local (la source et la destination sont un système de fichiers local) donc les trois processus s'exécuteront là-bas.
Il n'y a rien que vous puissiez faire, c'est par conception.

truqueur
la source
8
Vous ne pouvez pas limiter le nombre de processus, mais vous pouvez limiter la bande passante utilisée. Je suppose que sa machine est fouettée par la lecture et l'écriture rsync sur le même périphérique disque / bloc. L'utilisation de l'option '--bwlimit' peut aider dans ce cas.
JvO