当前位置: 首页 > 科技观察

使用cpulimit释放你的CPU

时间:2023-03-18 15:18:29 科技观察

在Linux系统上推荐的管理系统资源的工具是cgroups。虽然在可调整的限制(CPU、内存、磁盘I/O、网络等)方面非常强大,但配置cgroups并不简单。nice命令从1973年开始可用。但它只是调整在一个处理器上竞争时间的进程之间的调度优先级。nice命令不限制进程每单位时间可以消耗的CPU周期百分比。cpulimit命令提供了两全其美的方法。它限制了进程在单位时间内可以分配的CPU周期百分比,并且相对容易调用。cpulimit命令主要用于长时间运行和CPU密集型进程。编译软件和转换视频是长时间运行的进程的常见示例,它们可以最大限度地提高计算机的CPU使用率。限制此类进程的CPU使用率将为计算机上可能正在运行的其他任务释放处理器时间。限制CPU密集型进程也将降低功耗和热量输出,并可能降低系统上的风扇噪音。限制进程的CPU使用率的代价是运行完成需要更多时间。安装cpulimitcpulimit命令在默认的FedoraLinux存储库中可用。运行以下命令在FedoraLinux系统上安装cpulimit:$sudodnfinstallcpulimit查看cpulimit的文档cpulimit软件包没有附带手册页。使用以下命令查看cpulimit的内置文档。下面提供了输出。但是您可能需要在您自己的系统上运行该命令,以防选项在撰写本文后发生变化。$cpulimit--helpUsage:cpulimit[OPTIONS…]TARGETOPTIONS-l,--limit=N允许的cpu百分比从0到800(必需)-v,--verboseshowcontrolstatistics-z,--lazyexitifthere没有目标进程,或者如果它死了-i,--include-children也限制子进程-h,--help显示此帮助并退出TARGET必须恰好是其中之一:-p,--pid=Npidoftheprocess(implies-z)-e,--exe=FILEnameoftheexecutableprogramfileorpathnameCOMMAND[ARGS]runthiscommandandlimitit(implies-z)Demonstration为了演示如何使用cpulimit命令,下面提供了一个精心设计的、计算密集型的Python脚本。该脚本首先在没有限制的情况下运行,然后在50%的限制下运行。它计算第42个斐波那契数的值。在这两种情况下,脚本都作为time命令的子进程运行,以显示计算答案所需的总时间。$/bin/time-f'(以%e秒计算)'/bin/python-c'f=lambdan:nifn<2elsef(n-1)+f(n-2);print(f(42),end="")'267914296(在51.80秒内计算)$/bin/cpulimit-i-l50/bin/time-f'(在%e秒内计算)'/bin/python-c'f=lambdan:n如果n<2否则f(n-1)+f(n-2);print(f(42),end="")'267914296(在127.38秒内计算)当您第一次运行时您可能会听到计算机上的CPU风扇在运行版本命令时旋转。但是当运行第二个版本时,你不应该。该命令的第一个版本不受CPU限制,但它不应使您的计算机陷入困境。它的编写方式使其最多只能使用一个CPU内核。大多数现代PC都有多个CPU内核,当其中一个CPU100%繁忙时,其他任务可以毫无困难地同时运行。要验证第一个命令是否使您的一个处理器达到极限,请在单独的终端窗口中运行top命令并按1键。要退出top命令,请按Q键。将限制设置为高于100%仅对能够进行任务并行化的程序有意义。对于此类程序,超过100%的增量表示一个CPU的完全利用率(200%=2个CPU,300%=3个CPU,等等)。请注意,在上面的示例中,-i选项已传递给cpulimit命令。这是必要的,因为限制命令不是cpulimit命令的直接子命令。相反,它是time命令的子进程,而time命令又是cpulimit命令的子进程。如果没有-i选项,cpulimit只会限制时间命令。最后,如果您想限制从桌面图标启动的图形程序,请将程序的.desktop文件(通常位于/usr/share/applications目录)复制到您的~/.local/share/applications目录,并修改相应的Exec行。然后运行以下命令以应用更改:$update-desktop-database~/.local/share/applications