有没有办法限制整体 CPU 消耗?

有没有办法限制整体 CPU 消耗?

每次我运行资源密集型进程(例如大型编译、提取大型 tarball 或...播放 Flash)时,我的笔记本电脑(带有 i3 芯片的 HP)都会疯狂过热。

我目前正在研究一些冷却解决方案,但想到了限制全局 CPU 消耗的想法。我认为如果 CPU 受到限制,温度很可能会停止疯狂升高,并且我愿意牺牲一点性能来完成工作。

  1. 我的推理有错吗?
  2. 如何继续限制总体 CPU 使用率?

如果有帮助的话,我正在运行 Debian。

答案1

另一个没有提到的替代方案是cpufrequtils,我已经在我的笔记本电脑上安装并使用了 Debian 6。它允许您更改算法(州长,在cpufrequtils术语中),内核用来根据负载来调整时钟频率 - 特别是,userspace调速器允许您将频率锁定在您选择的某个值(当然,CPU 需要能够在此运行速度)。

例如,我用它来将 Atom 锁定在 800MHz,而不是 1.6GHz。它非常容易使用。

答案2

我不知道在没有大量黑客攻击的情况下是否可以将 CPU 限制在整个系统上,但是您可以使用以下命令轻松限制单个进程使用的 CPU 量CPU限制

我认为您能够有效使用它的唯一方法是为您知道占用资源的应用程序编写一个包装脚本(不能真正称之为脚本,它太小了)。举例来说,您发现 google-chrome 使用大量 CPU,您可以将路径中的 google-chrome 二进制文件替换为以下内容:

#! /bin/bash
cpulimit --limit 70 /usr/bin/google-chrome-bin

我还没有对此进行过测试,所以请持保留态度。从 cpulimit 的网站来看,您似乎可以为不同应用程序的 cpu 限制设置规则。我不确定,你得看看。

答案3

您可以使用脚本根据温度自动限制 CPU 核心临时油门。当您专注于更重要的事情时,它可以在后台运行。关于如何运行的示例:

sudo ./temp_throttle.sh 80 # Will limit CPU cores when 80C is reached.

*免责声明 - 我是 temp_throttle 的作者和维护者*

答案4

无需更改调速器,只需更改/sys/devices/system/cpu/*/cpufreq/scaling_max_freq每个 cpu 核心的值即可。

例如,使用这个 for 循环:

for f in /sys/devices/system/cpu/*/cpufreq/scaling_max_freq; do
    sudo sh -c "echo $1 > $f" 
done

也可以看看我的 setcpu 脚本

原始命令在这里找到

相关内容