cpulimit на самом деле не ограничивает использование процессора

cpulimit на самом деле не ограничивает использование процессора

Я звоню cpulimitиз cron:

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

Когда задание запускается, ЦП резко нагружается и выдает предупреждения, как и всегда, без фактического идентифицируемого предела. Само задание проходит по каталогу со многими подкаталогами и выполняет rsync' каждый раз, что, как я полагаю, порождает rsyncдочерние процессы (запуск top будет иметь pid, доступный для вызываемого rsync, который через несколько минут будет иметь другой pid для rsync).

Я не уверен, как правильно использовать cpulimitэтот процесс, чтобы эффективно ограничить его использование.

Важно помнить, что это виртуальная машина с 2 ГБ ОЗУ и 1 виртуальным ЦП.

решение1

По умолчанию cpulimitне ограничивает дочерние процессы, поэтому rsyncне ограничивается вообще. Если вы используете достаточно свежую версию, cpulimitвы должны иметь возможность использовать --include-children(или-i ). (См. такжеэтот ответ.)

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

Это изменит вашу запись cron на:

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

EDIT: Как ответили OP (сами), это сработает для cpulimitкоманд rsyncвнутри скрипта, но это не гарантирует, что ваш скрипт будет работать хорошо, пока он выполняет другие функции. Например, если скрипт должен обрабатывать большой каталог, он может затормозить систему и вызвать скачок нагрузки на процессор и оповещение.

Связанный контент