Linux是一個多工的作業系統,代表說系統上可能執行了各式各樣的程式與服務,為了能有效控制每一個程式所使用的資源,勢必對於CPU的使用需要有一些限度,避免讓單一程式吃滿了CPU的資,而影響到其他的程式無法正確地執行。若是主機上剛好又是多用戶的狀態,只能說預防勝於治療,若是已經有發生有程序暴衝的情形,一定要想辦法防範,不然連系統忙碌到都登入不進去時,也只有強制重開機一途了!

其實Linux內建就有控制使用率的系統參數了!ulimit就可以達到多種的控制,不過我一班很少看到有人在調整ulimit的參數,頂多DB server有一些安裝的基本需求,不然其他程式很少有相關的文件說明,能運行就好,最佳化是另外一回事!而且現在的CPU都很強大了,與其花時間在那裏調整,不如花錢買新機器來用最實在,若是沒有算,那麼只能說給一個工程師磨練的機會,可以獲得別人沒有的經驗,相信是資深的工程師都有過的經歷吧!

而今天是要記錄一款可以限制CPU使用的軟體,使用方式也很簡單,若是系統上常常有用戶超出正常的使用量,不妨利用著個軟體好好的限制一下!
cpulimit網站:http://cpulimit.sourceforge.net/

下載之後解壓縮,簡單的make過後就會產生一個cpulimit的執行檔,讓我們看看怎麼使用吧!

$ ./cpulimit -h
Usage: cpulimit TARGET [OPTIONS...]
   TARGET must be exactly one of these:
      -p, --pid=N        pid of the process (指定pid)
      -e, --exe=FILE     name of the executable program file (指定process name,ex:httpd)
      -P, --path=PATH    absolute path name of the executable program file (指定程式路徑, ex/usr/sbin/httpd)
   OPTIONS
      -l, --limit=N      percentage of cpu allowed from 0 to 100 (mandatory) (限制使用率,0-100)
      -v, --verbose      show control statistics (列出限制CPU的歷程)
      -z, --lazy         exit if there is no suitable target process, or if it dies (若程式已經中斷,則離開cpulimit)
      -h, --help         display this help and exit (指令說明)

範例:
$ ./cpulimit -p 12345 -l 15
$ ./cpulimit -e httpd -l 15
$ ./cpulimit -P /usr/sbin/httpd -l 15

若是需要清楚的知道有沒有正常的運作,建議加上-v的參數觀察。
確定要限制某個程序,可以在指令後加上&進入背景執行。

有需要的人可以參考看看囉!
更多資訊請參考:
最新超值旗艦機開箱
比螺旋燈泡還省電的迷你 NAS
26800mAh筆電行動電源