Cron

cpulimit 實際上並沒有限制 CPU 使用率

  • June 23, 2020

我打電話cpulimit來自cron

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

當工作開始時,CPU 會像往常一樣出現峰值並發出警報,而沒有發生實際可辨識的限制。該作業本身迭代許多子目錄的目錄並rsync每次執行 ‘,我相信這會產生rsync子程序(執行 top 將有一個可用於被呼叫的 rsync 的 pid,幾分鐘後將有一個不同的 pid rsync)。

我不確定如何正確利用cpulimit以有效限制此過程消耗的使用量。

記住這是一個具有 2G RAM 和 1vCPU 的 VM 可能很重要。

預設情況下cpulimit不限制子程序,因此rsync根本不受限制。如果您正在執行足夠新的版本,cpulimit您應該能夠使用--include-children(or -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 <marlonx80@hotmail.com>.

這會將您的 cron 條目更改為:

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

編輯:正如 OP(他們自己)回答的那樣,它適用於腳本cpulimit中的rsync命令,但這並不能確保您的腳本在執行其他功能時很好。例如,如果腳本必須處理一個龐大的目錄,它可能會阻塞系統並導致 CPU 峰值和警報。

引用自:https://unix.stackexchange.com/questions/554459