译者:geekpi
在Linux系统上管理系统资源的推荐工具是cgroups。似乎在可以调整的限制方面(CPU、内存、磁盘I/O、网络等)十分强悍,但配置cgroups并不简单。nice命令从1973年起就可以使用了。但它只是调整在一个处理器上竞争时间的进程之间的调度优先级。nice命令不会限制一个进程在单位时间内所能消耗的CPU周期的百分率。cpulimit命令提供了两个世界的最佳方案。它限制了一个进程在每单位时间内可以分配的CPU周期的比率,但是相对容易调用。
cpulimit命令主要对常年运行的和CPU密集型的进程有用。编译软件和转换视频是常年运行的进程的常见事例,它们可以使计算机的CPU使用率达到最大。限制这类进程的CPU使用率将释放出处理器时间安装linux后风扇不转动,供计算机上可能运行的其他任务使用。限制CPU密集型进程也将降低帧率及热输出,并可能降低系统的电扇噪声。限制一个进程的CPU使用率的代价是,它须要更多的时间来完成运行。
安装cpulimit
cpulimit命令在默认的FedoraLinux库房中可用。运行下边的命令安装linux后风扇不转动,在FedoraLinux系统上安装cpulimit:
$sudodnfinstallcpulimit
查看cpulimit的文档
cpulimit软件包并没有附送的指南页。使用下边的命令来查看cpulimit的外置文档。输出结果在下边提供。但你可能须要在你自己的系统上运行该命令,以避免自本文编撰以来选项发生变化。
$cpulimit--help
Usage:cpulimit[OPTIONS…]TARGET
OPTIONS
-l,--limit=Npercentageofcpuallowedfromto800(required)
-v,--verboseshowcontrolstatistics
-z,--lazyexitifthereisnotargetprocess,orifitdies
-i,--include-childrenlimitalsothechildrenprocesses
-h,--helpdisplaythishelpandexit
TARGETmustbeexactlyoneofthese:
-p,--pid=Npidoftheprocess(implies-z)
-e,--exe=FILEnameoftheexecutableprogramfileorpathname
COMMAND[ARGS]runthiscommandandlimitit(implies-z)
演示
为了演示cpulimit命令的使用方法,下边提供了一个悉心设计的、计算量很大的Python脚本。该脚本首先在没有限制的情况下运行,之后在限制为50%的情况下运行。它估算的是第42个斐波那契数的值。该脚本在这两种情况下都作为time命令的子进程运行,以显示估算答案所需的总时间。
$/bin/time-f'(computedin%eseconds)'/bin/python-c'f=lambdan:nifn
267914296(computedin51.80seconds)
$/bin/cpulimit-i-l50/bin/time-f'(computedin%eseconds)'/bin/python-c'f=lambdan:nifn
267914296(computedin127.38seconds)
当运行第一个版本的命令时,你可能会看到笔记本上的CPU电扇转动上去。但在运行第二个版本时,你应当不会。第一个版本的命令不受CPU的限制,但它不应当引起你的笔记本深陷截瘫。它是以这样一种方法编撰的:它最多只能使用一个CPU核心。大多数现代PC都有多个CPU核心,当其中一个CPU100%忙碌时,可以毫无困难地同时运行其他任务。为了验证第一条命令是否使你的一个处理器达到最大,在一个单独的终端窗口中运行top命令并按下1键。要退出top命令可以按Q键。
设置低于100%的限制只对能否进行任务并行化的程序有意义。对于这样的程序,低于100%的增量代表一个CPU的全部借助率(200%=2个CPU,300%=3个CPU,等等)。
注意,在里面的反例中,-i选项早已传递给cpulimit命令。这是必要的中标麒麟linux,由于要限制的命令不是cpulimit命令的直接子进程。相反,它是time命令的一个子进程,而前者又是cpulimit命令的一个子进程。假如没有-i选项linux操作系统论文,cpulimit将只限制time命令。
最后说明
假如你想限制一个从桌面图标启动的图形程序,请将该程序的.desktop文件(一般坐落/usr/share/applications目录下)复制到你的~/.local/share/applications目录下,并相应更改Exec行。之后运行下边的命令来应用这种变化:
$update-desktop-database~/.local/share/applications
via:
作者:GregoryBartholomew选题:lujun9972译者:geekpi校对:wxy