cpulimit en realidad no limita el uso de la CPU

cpulimit en realidad no limita el uso de la CPU

Estoy llamando cpulimitde cron:

00 16 * * * /usr/bin/cpulimit --limit 20 /bin/sh /media/storage/sqlbackup/backups.sh

Cuando comienza el trabajo, la CPU aumenta y emite alertas como siempre, sin que se haya producido ningún límite real identificable. El trabajo en sí itera sobre un directorio de muchos subdirectorios y realiza rsynccada vez, lo que creo que genera rsyncprocesos secundarios (ejecutar top tendrá un pid disponible para el rsync llamado, que después de unos minutos tendrá un pid diferente para rsync).

No estoy seguro de cómo utilizarlo correctamente cpulimitpara limitar eficazmente el uso que consume este proceso.

Puede ser importante tener en cuenta que se trata de una máquina virtual con 2 GB de RAM y 1 vCPU.

Respuesta1

De forma predeterminada, cpulimitno limita los procesos secundarios, por lo que rsyncno se limita en absoluto. Si está ejecutando una versión bastante reciente, cpulimitdebería poder utilizar la opción --include-children(o -i). (Ver tambiénesta respuesta.)

$ cpulimit -h
Usage: cpulimit [OPTIONS...] TARGET
   OPTIONS
      -l, --limit=N          percentage of cpu allowed from 0 to 400 (required)
      -v, --verbose          show control statistics
      -z, --lazy             exit if there is no target process, or if it dies
      -i, --include-children limit also the children processes
      -h, --help             display this help and exit
   TARGET must be exactly one of these:
      -p, --pid=N            pid of the process (implies -z)
      -e, --exe=FILE         name of the executable program file or path name
      COMMAND [ARGS]         run this command and limit it (implies -z)

Report bugs to <[email protected]>.

Eso cambiaría tu entrada cron a:

00 16 * * * /usr/bin/cpulimit --include-children --limit 20 /bin/sh /media/storage/sqlbackup/backups.sh

EDITAR: Como respondió el OP (ellos mismos), funcionaría con cpulimitlos rsynccomandos dentro del script, pero eso no garantizaría que su script sea agradable mientras realiza otras funciones. Por ejemplo, si el script tiene que procesar un directorio masivo, podría atascar el sistema y provocar un pico de CPU y una alerta.

información relacionada