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的參數觀察。
確定要限制某個程序,可以在指令後加上&進入背景執行。
有需要的人可以參考看看囉!