自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用 cpulimit 來釋放你的 CPU

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

[[406445]]

在 Linux 系統(tǒng)上管理系統(tǒng)資源的推薦工具是 cgroups。雖然在可以調(diào)整的限制方面(CPU、內(nèi)存、磁盤 I/O、網(wǎng)絡(luò)等)非常強(qiáng)大,但配置 cgroups 并不簡(jiǎn)單。nice 命令從 1973 年起就可以使用了。但它只是調(diào)整在一個(gè)處理器上競(jìng)爭(zhēng)時(shí)間的進(jìn)程之間的調(diào)度優(yōu)先級(jí)。nice 命令不會(huì)限制一個(gè)進(jìn)程在單位時(shí)間內(nèi)所能消耗的 CPU 周期的百分比。cpulimit 命令提供了兩個(gè)世界的最佳方案。它限制了一個(gè)進(jìn)程在每單位時(shí)間內(nèi)可以分配的 CPU 周期的百分比,而且相對(duì)容易調(diào)用。

cpulimit 命令主要對(duì)長(zhǎng)期運(yùn)行的和 CPU 密集型的進(jìn)程有用。編譯軟件和轉(zhuǎn)換視頻是長(zhǎng)期運(yùn)行的進(jìn)程的常見例子,它們可以使計(jì)算機(jī)的 CPU 使用率達(dá)到最大。限制這類進(jìn)程的 CPU 使用率將釋放出處理器時(shí)間,供計(jì)算機(jī)上可能運(yùn)行的其他任務(wù)使用。限制 CPU 密集型進(jìn)程也將減少功耗及熱輸出,并可能減少系統(tǒng)的風(fēng)扇噪音。限制一個(gè)進(jìn)程的 CPU 使用率的代價(jià)是,它需要更多的時(shí)間來完成運(yùn)行。

安裝 cpulimit

cpulimit 命令在默認(rèn)的 Fedora Linux 倉庫中可用。運(yùn)行下面的命令,在 Fedora Linux 系統(tǒng)上安裝 cpulimit

  1. $ sudo dnf install cpulimit

查看 cpulimit 的文檔

cpulimit 軟件包并沒有附帶的手冊(cè)頁。使用下面的命令來查看 cpulimit 的內(nèi)置文檔。輸出結(jié)果在下面提供。但你可能需要在你自己的系統(tǒng)上運(yùn)行該命令,以防止自本文編寫以來選項(xiàng)發(fā)生變化。

  1. $ cpulimit --help
  2. Usage: cpulimit [OPTIONS…] TARGET
  3. OPTIONS
  4. -l, --limit=N percentage of cpu allowed from 0 to 800 (required)
  5. -v, --verbose show control statistics
  6. -z, --lazy exit if there is no target process, or if it dies
  7. -i, --include-children limit also the children processes
  8. -h, --help display this help and exit
  9. TARGET must be exactly one of these:
  10. -p, --pid=N pid of the process (implies -z)
  11. -e, --exe=FILE name of the executable program file or path name
  12. COMMAND [ARGS] run this command and limit it (implies -z)

演示

為了演示 cpulimit 命令的使用方式,下面提供了一個(gè)精心設(shè)計(jì)的、計(jì)算量很大的 Python 腳本。該腳本首先在沒有限制的情況下運(yùn)行,然后在限制為 50% 的情況下運(yùn)行。它計(jì)算的是第 42 個(gè) 斐波那契數(shù) 的值。該腳本在這兩種情況下都作為 time 命令的子進(jìn)程運(yùn)行,以顯示計(jì)算答案所需的總時(shí)間。

  1. $ /bin/time -f '(computed in %e seconds)' /bin/python -c 'f = lambda n: n if n<2 else f(n-1)+f(n-2); print(f(42), end=" ")'
  2. 267914296 (computed in 51.80 seconds)
  3. $ /bin/cpulimit -i -l 50 /bin/time -f '(computed in %e seconds)' /bin/python -c 'f = lambda n: n if n<2 else f(n-1)+f(n-2); print(f(42), end=" ")'
  4. 267914296 (computed in 127.38 seconds)

當(dāng)運(yùn)行第一個(gè)版本的命令時(shí),你可能會(huì)聽到電腦上的 CPU 風(fēng)扇轉(zhuǎn)動(dòng)起來。但在運(yùn)行第二個(gè)版本時(shí),你應(yīng)該不會(huì)。第一個(gè)版本的命令不受 CPU 的限制,但它不應(yīng)該導(dǎo)致你的電腦陷入癱瘓。它是以這樣一種方式編寫的:它最多只能使用一個(gè) CPU 核心。大多數(shù)現(xiàn)代 PC 都有多個(gè) CPU 核心,當(dāng)其中一個(gè) CPU 100% 繁忙時(shí),可以毫無困難地同時(shí)運(yùn)行其他任務(wù)。為了驗(yàn)證第一條命令是否使你的一個(gè)處理器達(dá)到最大,在一個(gè)單獨(dú)的終端窗口中運(yùn)行 top 命令并按下 1 鍵。要退出 top 命令可以按 Q 鍵。

設(shè)置高于 100% 的限制只對(duì)能夠進(jìn)行 任務(wù)并行化 的程序有意義。對(duì)于這樣的程序,高于 100% 的增量代表一個(gè) CPU 的全部利用率(200%=2 個(gè)CPU,300%=3 個(gè)CPU,等等)。

注意,在上面的例子中,-i 選項(xiàng)已經(jīng)傳遞給 cpulimit 命令。這是必要的,因?yàn)橐拗频拿畈皇?nbsp;cpulimit 命令的直接子進(jìn)程。相反,它是 time 命令的一個(gè)子進(jìn)程,而后者又是 cpulimit 命令的一個(gè)子進(jìn)程。如果沒有 -i 選項(xiàng),cpulimit 將只限制 time 命令。

最后說明

如果你想限制一個(gè)從桌面圖標(biāo)啟動(dòng)的圖形程序,請(qǐng)將該程序的 .desktop 文件(通常位于 /usr/share/applications 目錄下)復(fù)制到你的 ~/.local/share/applications 目錄下,并相應(yīng)修改 Exec 行。然后運(yùn)行下面的命令來應(yīng)用這些變化:

  1. $ update-desktop-database ~/.local/share/applications

 

責(zé)任編輯:龐桂玉 來源: Linux中國(guó)
相關(guān)推薦

2014-12-01 13:44:03

cgroupscpulimitlinux

2017-02-14 08:33:48

CPULinux內(nèi)核

2013-10-30 09:37:19

LinuxLinux命令

2016-10-12 13:37:09

LombokIDEidea

2014-11-05 20:05:46

dockerJenkins

2024-05-16 11:45:19

Rust項(xiàng)目代碼

2017-12-25 09:39:07

Linuxbashparallel

2012-07-26 09:10:31

PHP

2018-05-21 14:44:33

LinuxshellPython

2013-12-10 10:16:39

2020-07-06 11:32:50

HTTPHTTP Header開發(fā)者

2024-08-26 15:17:16

2021-01-04 13:25:10

Git開源工具

2016-03-18 09:44:05

隊(duì)列分析應(yīng)用留存用戶行為

2021-02-24 14:00:42

LinuxChromebook谷歌

2020-11-15 18:00:49

開源可視化工具Python

2018-04-02 10:28:10

iOSPWA蘋果

2015-11-03 13:50:21

SlackDocker運(yùn)維機(jī)器人

2020-12-09 10:34:51

htopLinux命令

2013-07-09 17:21:53

VMware混合云
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)