Nice rsync sur une machine distante


25

Lors de l'utilisation de rsync + ssh pour accéder à une machine distante, existe-t-il un moyen de "bien" le processus rsync sur la machine distante (pour réduire sa priorité)?

Modification de la question pour clarifier:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
backups  16651 86.2  0.1   3576  1636 ?        Rs   11:06   0:06 rsync --ser...

(ligne rsync coupée)

Il s'agit d'un travail cron de sauvegarde qui s'exécute normalement à 4 heures du matin, mais lorsque je suis éveillé (et que je commets ou que j'utilise Bugzilla hébergé sur cette même machine), il tue les performances du serveur, donc je voulais un "hack" rapide pour essayer de réparer un peu.

Réponses:


35

Vous pouvez utiliser l' --rsync-pathoption, par exemple.

rsync --rsync-path="nice rsync" foo remotebox:/tmp/

15
Vous pourriez également envisager d'utiliser ionice , par exemple --rsync-path="ionice -c 3 nice rsync", bien que les Linux modernes réduisent automatiquement la priorité d'E / S pour les processus agréables (voir la page de manuel que j'ai liée).
Jo Liss

J'ai déjà essayé cela, mais mon sshd fonctionne toujours ànice 0
Felipe Alvarez

sur FreeBSD comme les systèmes où vous n'en avez pas ionice, la définition de l' --bwlimitoption est bonne pour une meilleure synchronisation.
deed02392

1
J'ai également eu un problème avec cette option qui ne faisait aucune différence. Il s'est avéré que le serveur auquel je me connectais était configuré dans authorized_keys pour n'accepter qu'une commande rsync spécifique, qui remplaçait l' --rsync-pathoption que je spécifiais.
Andy Beverley

7
  • Prendre l' --rsync-pathoption que vous avezrsync --rsync-path="ionice -c 3 nice -n 12 rsync" localDirectory remoteHost:/tmp/
  • En prenant l' option du fichier de configuration, vous pouvez modifier ou décommenter dans le fichier /etc/default/rsyncla RSYNC_NICE='17'valeur et la RSYNC_IONICE='-c3'valeur

Pour les deux, la valeur de l' ionice sera pour la priorité du disque dur

  • 1 -> Temps réel
  • 2 -> Meilleur effort
  • 3 -> Ildle (quand aucun autre processus n'utilise le HD)

Notez que pour Linux, seul le cfqplanificateur implémente réellement les classes et les priorités d'E / S. Si l'administrateur système distant a opté pour le planificateur d'E / S noop, deadlineou pour une variante plus exotique, vous pouvez constater que ionicecela ne fait vraiment rien. Il faut pouvoir obtenir des performances élevées cfqet pouvoir utiliser les classes et les priorités d'E / S en réglant correctement cfq .

pour une bonne valeur pour la priorité du processeur

  • -20 (le plus favorable au procédé)
  • (par défaut 10) si -n n'est pas spécifié
  • 19 (le moins favorable au processus)

Qui en est responsable /etc/default/rsync? Est-ce que rsync lui-même lit ce fichier, ou est-ce fait par la distribution / saveur linux?
guettli

... Je pense avoir trouvé la solution dans /etc/default/rsyncle fichier par défaut du mode démon rsync. Je suppose que cela ne s'applique que si vous vous connectez au démon rsync via le protocole rsync. Je suppose que cela ne s'applique pas si vous l'appelez via ssh.
guettli

2

Une solution rapide et sale serait de créer un petit script wrapper appelé 'rsync' qui masque le $ PATH avant le vrai binaire rsync comme:

#!/bin/sh
nice -10 /path/to/proper/rsync $*

Ou configurez le fichier authorized_keys de sorte qu'il effectue le nettoyage de rsync. (En supposant que vous utilisez des clés ssh).

Exemple:

command=”/home/user/bin/nice-rsync.sh" ssh-dss asdf....

Maintenant dans votre /home/user/bin/nice-rsync.sh

#!/bin/sh
case $SSH_ORIGINAL_COMMAND in
  rsync\ --server*)
    nice -10 $SSH_ORIGINAL_COMMAND
    ;;
  *)
    $SSH_ORIGINAL_COMMAND
    ;;
esac

HTH


2

Vous pouvez désactiver la compression le long du réseau, en n'incluant pas l' -zargument, ce qui pourrait économiser du temps CPU de chaque côté. Ou changez la façon dont rsync utilise les sommes de contrôle, regardez--checksum


J'ai accepté la réponse de Hasturkun (car elle a répondu à ma question), mais vous avez soulevé un bon point: j'ai comparé la compression vs sans compression, et cela n'a ajouté que 2 minutes au travail. Je suis tellement habitué à utiliser -avz comme indicateur que je n'ai jamais pensé à supprimer -z.
mwalling

Mon habitude est d'utiliser -aPh, j'utilise rarement -z
Rory

0

Rsync ne devrait pas utiliser beaucoup de CPU. Je doute que vous puissiez forcer une certaine gentillesse de l'autre côté, mais ce que vous pourriez faire est de limiter la bande passante que rsync utilise avec un pare-feu, ce qui réduirait finalement la quantité de traitement qu'il pourrait faire en X temps.


Ajout d'une sortie de 'ps aux' pour montrer ce qu'il fait en ce qui concerne le CPU. Je passe par un lien lent, j'ai donc l'option --compress activée, mais cela provoque également une bonne quantité d'accès au disque, que j'espérais supprimer en utilisant nice (effet secondaire involontaire)
mwalling

La définition d'une valeur agréable affecte généralement la gentillesse des E / S, ce que quelqu'un veut généralement.
Bram Schoenmakers

rsyncne nécessite pas beaucoup de CPU mais il peut topnéanmoins apparaître si le noyau actuel considère que les E / S attendent comme occupées. En outre, si un autre processus doit accéder au stockage et rsyncest autorisé à s'exécuter à plein rythme, tous les autres processus seront ralentis en conséquence.
Mikko Rantalainen

-7

Je ne pense pas, vous avez besoin d'une solution personnalisée pour cela. Utilisez ftp


6
Tu sais, c'est une bonne idée. Qui a besoin de toutes les fonctionnalités de rsync comme pouvoir exécuter sur ssh sans avoir besoin d'un démon exécuté sur la machine distante (et le cryptage inhérent de ssh), transférer la compression, reprendre les téléchargements, ne transférer que les différences ... c'est toute la fonctionnalité gonfler. Je vais rentrer à la maison maintenant et utiliser mon système PS / 2 60 pour FTP un anime!
mwalling

Veuillez supprimer cette réponse car elle ne répond pas à la question et offre une alternative bien pire que l'exemple de la question.
user1133275
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.