Linux中國

使用 cpulimit 來釋放你的 CPU

在 Linux 系統上管理系統資源的推薦工具是 cgroups。雖然在可以調整的限制方面(CPU、內存、磁碟 I/O、網路等)非常強大,但配置 cgroups 並不簡單。nice 命令從 1973 年起就可以使用了。但它只是調整在一個處理器上競爭時間的進程之間的調度優先順序。nice 命令不會限制一個進程在單位時間內所能消耗的 CPU 周期的百分比。cpulimit 命令提供了兩個世界的最佳方案。它限制了一個進程在每單位時間內可以分配的 CPU 周期的百分比,而且相對容易調用。

cpulimit 命令主要對長期運行的和 CPU 密集型的進程有用。編譯軟體和轉換視頻是長期運行的進程的常見例子,它們可以使計算機的 CPU 使用率達到最大。限制這類進程的 CPU 使用率將釋放出處理器時間,供計算機上可能運行的其他任務使用。限制 CPU 密集型進程也將減少功耗及熱輸出,並可能減少系統的風扇噪音。限制一個進程的 CPU 使用率的代價是,它需要更多的時間來完成運行。

安裝 cpulimit

cpulimit 命令在默認的 Fedora Linux 倉庫中可用。運行下面的命令,在 Fedora Linux 系統上安裝 cpulimit

$ sudo dnf install cpulimit

查看 cpulimit 的文檔

cpulimit 軟體包並沒有附帶的手冊頁。使用下面的命令來查看 cpulimit 的內置文檔。輸出結果在下面提供。但你可能需要在你自己的系統上運行該命令,以防止自本文編寫以來選項發生變化。

$ 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 命令的使用方式,下面提供了一個精心設計的、計算量很大的 Python 腳本。該腳本首先在沒有限制的情況下運行,然後在限制為 50% 的情況下運行。它計算的是第 42 個 斐波那契數 的值。該腳本在這兩種情況下都作為 time 命令的子進程運行,以顯示計算答案所需的總時間。

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

當運行第一個版本的命令時,你可能會聽到電腦上的 CPU 風扇轉動起來。但在運行第二個版本時,你應該不會。第一個版本的命令不受 CPU 的限制,但它不應該導致你的電腦陷入癱瘓。它是以這樣一種方式編寫的:它最多只能使用一個 CPU 核心。大多數現代 PC 都有多個 CPU 核心,當其中一個 CPU 100% 繁忙時,可以毫無困難地同時運行其他任務。為了驗證第一條命令是否使你的一個處理器達到最大,在一個單獨的終端窗口中運行 top 命令並按下 1 鍵。要退出 top 命令可以按 Q 鍵。

設置高於 100% 的限制只對能夠進行 任務並行化 的程序有意義。對於這樣的程序,高於 100% 的增量代表一個 CPU 的全部利用率(200%=2 個CPU,300%=3 個CPU,等等)。

注意,在上面的例子中,-i 選項已經傳遞給 cpulimit 命令。這是必要的,因為要限制的命令不是 cpulimit 命令的直接子進程。相反,它是 time 命令的一個子進程,而後者又是 cpulimit 命令的一個子進程。如果沒有 -i 選項,cpulimit 將只限制 time 命令。

最後說明

如果你想限制一個從桌面圖標啟動的圖形程序,請將該程序的 .desktop 文件(通常位於 /usr/share/applications 目錄下)複製到你的 ~/.local/share/applications 目錄下,並相應修改 Exec 行。然後運行下面的命令來應用這些變化:

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

via: https://fedoramagazine.org/use-cpulimit-to-free-up-your-cpu/

作者:Gregory Bartholomew 選題:lujun9972 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    這個站點使用 Akismet 來減少垃圾評論。了解你的評論數據如何被處理

    More in:Linux中國

    Linux中國

    關於Linux防火牆iptables的面試問答

    Nishita Agarwal是Tecmint的用戶,她將分享關於她剛剛經歷的一家公司(印度的一家私人公司Pune)的面試經驗。在面試中她被問及許多不同的問題,但她是iptables方面的專家,因此她想分享這些關於iptables的問題和相應的答案給那些以後可能會進行相關面試的人。 所有的問題和相應的答案都基於Nishita Agarwal的記憶並經過了重寫。 嗨,朋友!我叫Nishita Agarwal。我已經取得了理學學士學位,我的專業集中在UNIX和它的變種(BSD,Linux)。它們一直深深的吸引著我。我在存儲方面有1年多的經驗。我正在尋求職業上的變化,並將供職於印度的P
    Linux中國

    Lets Encrypt 已被所有主流瀏覽器所信任

    旨在讓每個網站都能使用 HTTPS 加密的非贏利組織 Lets Encrypt 已經得了 IdenTrust的交叉簽名,這意味著其證書現在已經可以被所有主流的瀏覽器所信任。從這個裡程碑事件開始,訪問者訪問使用了Lets Encrypt 證書的網站不再需要特別配置就可以得到 HTTPS 安全保護了。 Lets Encrypt 的兩個中級證書 ...
    Linux中國

    SSL/TLS 加密新紀元 – Lets Encrypt

    根據 Let's Encrypt 官方博客消息,Let's Encrypt 服務將在下周(11 月 16 日)正式對外開放。 Let's Encrypt 項目是由互聯網安全研究小組(ISRG,Internet Security Research Group)主導並開發的一個新型數字證書認證機構(CA,Certificate ...