Nice rsync en máquina remota

25

Cuando se usa rsync + ssh para acceder a una máquina remota, ¿hay alguna manera de "agrandar" el proceso rsync en la máquina remota (para disminuir su prioridad)?

Edición de la pregunta para aclarar:

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...

(línea rsync cortada)

Este es un trabajo cron de respaldo que normalmente se ejecuta a las 4 a.m., pero cuando estoy despierto (y me comprometo o uso Bugzilla alojado en esa misma máquina), mata el rendimiento del servidor, por lo que quería un "truco" rápido para intentar solucionarlo un poco

mwalling
fuente

Respuestas:

35

Puede usar la --rsync-pathopción, por ejemplo.

rsync --rsync-path="nice rsync" foo remotebox:/tmp/
Hasturkun
fuente
15
También puede considerar el uso de ionice , por ejemplo --rsync-path="ionice -c 3 nice rsync", aunque los Linux modernos reducen automáticamente la prioridad de E / S para los procesos agradables (consulte la página de manual que he vinculado).
Jo Liss
Ya lo intenté, pero mi sshd todavía está funcionando ennice 0
Felipe Alvarez
en FreeBSD, como los sistemas donde no tienes ionice, configurar la --bwlimitopción es buena para un rsync más agradable.
escritura 02392
1
También tuve un problema con esta opción que no hace ninguna diferencia. Resultó que el servidor al que me estaba conectando se configuró en autorizado_keys para aceptar solo un comando rsync específico, que anulaba la --rsync-pathopción que estaba especificando.
Andy Beverley
7
  • Tomando la --rsync-pathopción que tienesrsync --rsync-path="ionice -c 3 nice -n 12 rsync" localDirectory remoteHost:/tmp/
  • Al tomar la opción del archivo de configuración , puede cambiar o descomentar en el archivo /etc/default/rsyncel RSYNC_NICE='17'valor y el RSYNC_IONICE='-c3'valor

Para ambos, el valor de ionice será para la prioridad del disco duro

  • 1 -> Tiempo real
  • 2 -> Mejor esfuerzo
  • 3 -> Ildle (cuando cualquier otro proceso no está utilizando el HD)

Tenga en cuenta que para Linux solo el cfqplanificador realmente implementa las clases y prioridades de IO. Si el administrador del sistema remoto ha optado por el planificador de E / S noop, deadlineo alguna variante más exótica, es posible que ionicerealmente no haga nada. Uno debería poder obtener un alto rendimiento cfqy aún poder usar las clases y prioridades de IO ajustando cfq correctamente .

para un buen valor para la prioridad del procesador

  • -20 (más favorable al proceso)
  • (predeterminado 10) si -n no se especifica
  • 19 (menos favorable al proceso)
Philippe Gachoud
fuente
¿De quién es responsable /etc/default/rsync? ¿Rsync está leyendo este archivo, o lo hace linux-flavour / distribution?
guettli
... Creo que encontré que la solución /etc/default/rsynces el archivo predeterminado para el modo rsync daemon. Supongo que solo se aplica si te conectas al demonio rsync a través del protocolo rsync. Supongo que no se aplica si lo llamas a través de ssh.
guettli
2

Una solución rápida y sucia sería crear un pequeño script de envoltorio llamado 'rsync' que sombree el $ PATH antes del binario rsync real como:

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

O configure el archivo authorised_keys para que realice el nicing de rsync. (Suponiendo que está usando las teclas ssh).

ejemplo:

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

Ahora en su /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

pyhimys
fuente
2

Puede deshabilitar la compresión a lo largo de la red, sin incluir el -zargumento, que podría ahorrar algo de tiempo de CPU en ambos lados. O cambie cómo rsync usa sumas de verificación, mire--checksum

Rory
fuente
Acepté la respuesta de Hasturkun (ya que respondió mi pregunta), pero mencionaste un buen punto: comparé con compresión vs sin compresión, y solo agregó 2 minutos al trabajo. Me acostumbré tanto a usar -avz como mis banderas que nunca pensé en soltar -z.
mwalling
Mi costumbre es usar -aPh, rara vez uso -z
Rory
0

Rsync no debería usar mucha CPU. Dudo que pueda forzar una cierta amabilidad desde el otro extremo, pero lo que podría hacer es limitar el ancho de banda que rsync está usando con un firewall, lo que en última instancia reduciría la cantidad de procesamiento que podría hacer en X cantidad de tiempo.

Zimmy-DUB-Zongy-Zong-DUBBY
fuente
Se agregó algo de salida de 'ps aux' para mostrar lo que está haciendo en cuanto a CPU. Voy por un enlace lento, así que tengo la opción --compress activada, pero también está causando una buena cantidad de acceso al disco, que esperaba eliminar usando un agradable (efecto secundario no deseado)
mwalling
Establecer un valor agradable generalmente también afecta la simplicidad de E / S, que es lo que alguien generalmente quiere.
Bram Schoenmakers
rsyncno requiere mucha CPU, pero puede aparecer, topsin embargo, dependiendo de si el núcleo actual considera que la E / S espera como ocupada. Además, si algún otro proceso necesita acceder al almacenamiento y rsyncse permite que se ejecute a un ritmo completo, todos los demás procesos se ralentizarán como resultado.
Mikko Rantalainen
-7

No lo creo, necesitas una solución personalizada para eso ... usa ftp

ultraman
fuente
66
Sabes, esa es una buena idea. ¿Quién necesita todas las características de rsync como poder ejecutar ssh sin necesidad de ejecutar un demonio en la máquina remota (y el cifrado inherente de ssh), transferir compresión, reanudar descargas, solo transferir las diferencias ... esa es toda la característica inflar. ¡Voy a correr a casa ahora mismo y usaré mi PS / 2 System 60 para hacer un poco de anime en FTP!
mwalling
Elimine esta respuesta ya que no responde la pregunta y ofrece una alternativa significativamente peor que el ejemplo en la pregunta.
user1133275