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中國