cpulimit begrenzt die CPU-Auslastung nicht wirklich

cpulimit begrenzt die CPU-Auslastung nicht wirklich

Ich rufe cpulimitvon ... aus an cron:

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

Wenn der Job startet, kommt es wie immer zu Spitzenwerten und Alarmen bei der CPU-Auslastung, ohne dass eine tatsächliche Begrenzung festgestellt wurde. Der Job selbst durchläuft ein Verzeichnis mit vielen Unterverzeichnissen und führt rsyncjedes Mal 's aus, was meiner Meinung nach untergeordnete rsyncProzesse erzeugt (beim Ausführen von top ist eine PID für das aufgerufene rsync verfügbar, das nach einigen Minuten eine andere PID für hat rsync).

Ich bin nicht sicher, wie ich cpulimitden Verbrauch dieses Prozesses wirksam begrenzen kann.

Es ist möglicherweise wichtig, im Hinterkopf zu behalten, dass dies eine VM mit 2 GB RAM und 1 vCPU ist.

Antwort1

Standardmäßig cpulimitwerden untergeordnete Prozesse nicht eingeschränkt, daher rsyncwird überhaupt nicht eingeschränkt. Wenn Sie eine aktuelle Version von verwenden, sollten Sie die Option (oder ) cpulimitverwenden können . (Siehe auch--include-children-idiese Antwort.)

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

Dadurch würde sich Ihr Cron-Eintrag wie folgt ändern:

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

EDIT: Wie der OP (selbst) antwortete, würde es funktionieren, cpulimitdie rsyncBefehle innerhalb des Skripts auszuführen, aber das würde nicht sicherstellen, dass Ihr Skript gut funktioniert, während es andere Funktionen ausführt. Wenn das Skript beispielsweise ein riesiges Verzeichnis verarbeiten muss, könnte es das System verlangsamen und eine CPU-Spitze und einen Alarm verursachen.

verwandte Informationen