限制 CPU 使用率 % 所有进程和内核

Coo*_*rac 7 power-management limit cpu-usage

我最近在我的戴尔机器上安装了 Scientific linux 7(64 位),它有 2 个内核(即 2 个逻辑 CPU)。我有一段时间没有打开电脑来清洁风扇、冷却器等,当在一个(或两个)核心上使用高(例如 100%)CPU 几分钟(通常是当noveau损坏了在Firefox上显示图形或加载 PDF 文档或在终端上的任何长时间运行的命令(如make)。

在我清理系统之前,我想将 CPU 使用率 % 限制为每个核心(而不是每个进程!)大约 75 或 80%,这样我就不会意外关闭。这样,进程仍然可以利用多个 CPU,但不会将它们中的任何一个推到 CPU 使用百分比限制之上。有什么方法可以做到这一点?

Coo*_*rac 6

经过几天的深入研究,我发现了两种降低进程CPU 使用率的方法。一般如果你想降低整机的cpu使用率,可能有一些程序使用了最持久的cpu,你应该限制它们而不是给整机带来负担。如果你这样做是为了节省电池寿命,那么你可能还想通过调整powertop来控制硬件的电源使用,大多数发行版都有工具来帮助你。

  1. 停止/继续信号

自 UNIX 以来,信号就已存在。您将 SIGSTOP 或 SIGTSTP 发送到进程(区别在于,如果必须执行清理工作,前者可能会使进程崩溃,进程不会被迫在后者处停止,请使用适合您进程的那个)来暂停它(释放CPU 和可能降低温度)。然后你向进程发送一个 SIGCONT 以恢复它,占用 CPU。此方法将在 cpu 图形上产生一系列“尖峰”,并阻止处理器过热,因为您没有通过暂停进程为其提供足够的时间。

这种方法的后果是这些暂停不流畅,这意味着视频播放甚至网页浏览也不会流畅,因此您可能希望将此方法与 shell 命令(多进程程序或命令,如 Google Chrome 或 make也不能很好地使用这种方法)。显然,建议像 systemd 那样暂停/恢复系统进程。

尽管您可以手动执行此操作,但cpulimit是一个使用此方法的不错的小程序(它使用 SIGSTOP/SIGCONT)。与描述相反,即使您有多个内核,您指定的 cpu % 也在 0 到 100 之间。并且您始终可以使用 Ctrl-Z 在终端中暂停作业。

  1. cpupower(强烈推荐)

这个是在 Linux 内核中构建的,所以大多数发行版都应该提供它(如果没有,请在此处获取)。这个命令行实用程序管理 CPU 频率,因此它几乎可以使用调控器状态(例如,性能、省电等)控制整个 CPU ,它还可以做其他事情。与暂停/恢复方法不同,使用此方法的过程顺畅得多。您需要为处理器设置最大频率。

  1. 运行cpupower frequency-info以查看可用的处理器状态。
  2. 以 rootcpupower frequency-set -u <frequency>身份键入,从您拥有的最低频率开始,然后尝试找到不会过热的最高频率。
  3. (这是可选的)如果需要,您可以安装 lm_sensors 包,它允许您查看系统温度。然后运行sensors-detect并对所有问题回答“是”。最后,运行sensors以查看当前和临界(超出系统过热)温度。

此时现在的温度应该低得多。请注意,尽管某些性能密集型程序(如游戏)在键入上述命令后可能会挂起,但如果您收到带有该消息的弹出窗口,则应等待程序而不是强制退出。请注意,每次系统重新启动时都必须键入此命令(除非您可以让它自动运行)。有关cpupower 的更多信息,请参阅