新聞中心
cpulimit 命令主要對長期運(yùn)行的和 CPU 密集型的進(jìn)程有用。編譯軟件和轉(zhuǎn)換視頻是長期運(yùn)行的進(jìn)程的常見例子,它們可以使計算機(jī)的 CPU 使用率達(dá)到最大。限制這類進(jìn)程的 CPU 使用率將釋放出處理器時間,供計算機(jī)上可能運(yùn)行的其他任務(wù)使用。

成都創(chuàng)新互聯(lián)公司是創(chuàng)新、創(chuàng)意、研發(fā)型一體的綜合型網(wǎng)站建設(shè)公司,自成立以來公司不斷探索創(chuàng)新,始終堅持為客戶提供滿意周到的服務(wù),在本地打下了良好的口碑,在過去的十載時間我們累計服務(wù)了上千家以及全國政企客戶,如餐廳設(shè)計等企業(yè)單位,完善的項(xiàng)目管理流程,嚴(yán)格把控項(xiàng)目進(jìn)度與質(zhì)量監(jiān)控加上過硬的技術(shù)實(shí)力獲得客戶的一致稱譽(yù)。
在 Linux 系統(tǒng)上管理系統(tǒng)資源的推薦工具是 cgroups。雖然在可以調(diào)整的限制方面(CPU、內(nèi)存、磁盤 I/O、網(wǎng)絡(luò)等)非常強(qiáng)大,但配置 cgroups 并不簡單。nice 命令從 1973 年起就可以使用了。但它只是調(diào)整在一個處理器上競爭時間的進(jìn)程之間的調(diào)度優(yōu)先級。nice 命令不會限制一個進(jìn)程在單位時間內(nèi)所能消耗的 CPU 周期的百分比。cpulimit 命令提供了兩個世界的最佳方案。它限制了一個進(jìn)程在每單位時間內(nèi)可以分配的 CPU 周期的百分比,而且相對容易調(diào)用。
cpulimit 命令主要對長期運(yùn)行的和 CPU 密集型的進(jìn)程有用。編譯軟件和轉(zhuǎn)換視頻是長期運(yùn)行的進(jìn)程的常見例子,它們可以使計算機(jī)的 CPU 使用率達(dá)到最大。限制這類進(jìn)程的 CPU 使用率將釋放出處理器時間,供計算機(jī)上可能運(yùn)行的其他任務(wù)使用。限制 CPU 密集型進(jìn)程也將減少功耗及熱輸出,并可能減少系統(tǒng)的風(fēng)扇噪音。限制一個進(jìn)程的 CPU 使用率的代價是,它需要更多的時間來完成運(yùn)行。
安裝 cpulimit
cpulimit 命令在默認(rèn)的 Fedora Linux 倉庫中可用。運(yùn)行下面的命令,在 Fedora Linux 系統(tǒng)上安裝 cpulimit:
$ sudo dnf install cpulimit
查看 cpulimit 的文檔
cpulimit 軟件包并沒有附帶的手冊頁。使用下面的命令來查看 cpulimit 的內(nèi)置文檔。輸出結(jié)果在下面提供。但你可能需要在你自己的系統(tǒng)上運(yùn)行該命令,以防止自本文編寫以來選項(xiàng)發(fā)生變化。
$ cpulimit --help
Usage: cpulimit [OPTIONS…] TARGET
OPTIONS
-l, --limit=N percentage of cpu allowed from 0 to 800 (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)
演示
為了演示 cpulimit 命令的使用方式,下面提供了一個精心設(shè)計的、計算量很大的 Python 腳本。該腳本首先在沒有限制的情況下運(yùn)行,然后在限制為 50% 的情況下運(yùn)行。它計算的是第 42 個 斐波那契數(shù) 的值。該腳本在這兩種情況下都作為 time 命令的子進(jìn)程運(yùn)行,以顯示計算答案所需的總時間。
$ /bin/time -f '(computed in %e seconds)' /bin/python -c 'f = lambda n: n if n 267914296 (computed in 51.80 seconds) $ /bin/cpulimit -i -l 50 /bin/time -f '(computed in %e seconds)' /bin/python -c 'f = lambda n: n if n 267914296 (computed in 127.38 seconds)
當(dāng)運(yùn)行第一個版本的命令時,你可能會聽到電腦上的 CPU 風(fēng)扇轉(zhuǎn)動起來。但在運(yùn)行第二個版本時,你應(yīng)該不會。第一個版本的命令不受 CPU 的限制,但它不應(yīng)該導(dǎo)致你的電腦陷入癱瘓。它是以這樣一種方式編寫的:它最多只能使用一個 CPU 核心。大多數(shù)現(xiàn)代 PC 都有多個 CPU 核心,當(dāng)其中一個 CPU 100% 繁忙時,可以毫無困難地同時運(yùn)行其他任務(wù)。為了驗(yàn)證第一條命令是否使你的一個處理器達(dá)到最大,在一個單獨(dú)的終端窗口中運(yùn)行 top 命令并按下 1 鍵。要退出 top 命令可以按 Q 鍵。
設(shè)置高于 100% 的限制只對能夠進(jìn)行 任務(wù)并行化 的程序有意義。對于這樣的程序,高于 100% 的增量代表一個 CPU 的全部利用率(200%=2 個CPU,300%=3 個CPU,等等)。
注意,在上面的例子中,-i 選項(xiàng)已經(jīng)傳遞給 cpulimit 命令。這是必要的,因?yàn)橐拗频拿畈皇?cpulimit 命令的直接子進(jìn)程。相反,它是 time 命令的一個子進(jìn)程,而后者又是 cpulimit 命令的一個子進(jìn)程。如果沒有 -i 選項(xiàng),cpulimit 將只限制 time 命令。
最后說明
如果你想限制一個從桌面圖標(biāo)啟動的圖形程序,請將該程序的 .desktop 文件(通常位于 /usr/share/applications 目錄下)復(fù)制到你的 ~/.local/share/applications 目錄下,并相應(yīng)修改 Exec 行。然后運(yùn)行下面的命令來應(yīng)用這些變化:
$ update-desktop-database ~/.local/share/applications
分享文章:通過cpulimit來釋放服務(wù)器的CPU
轉(zhuǎn)載來于:http://m.fisionsoft.com.cn/article/dpisood.html


咨詢
建站咨詢
