每次运行资源密集型进程(例如大型编译,提取大型tar包或...玩Flash)时,我的笔记本电脑(带有i3芯片的HP)都会过热,变得疯狂。
我目前正在研究一些散热解决方案,但有限制全局CPU消耗的想法。我认为如果将CPU设置为上限,则温度可能会停止急剧上升,并且我愿意牺牲一点性能以完成工作。
- 我的推理错了吗?
- 如何继续限制总体CPU使用率?
如果有帮助,我正在运行Debian。
每次运行资源密集型进程(例如大型编译,提取大型tar包或...玩Flash)时,我的笔记本电脑(带有i3芯片的HP)都会过热,变得疯狂。
我目前正在研究一些散热解决方案,但有限制全局CPU消耗的想法。我认为如果将CPU设置为上限,则温度可能会停止急剧上升,并且我愿意牺牲一点性能以完成工作。
如果有帮助,我正在运行Debian。
Answers:
我不知道将CPU限制到整个系统是可以做到的,而无需进行大量的黑客操作,但是您可以使用cpulimit轻松地限制单个进程使用的CPU 数量
我能想到的唯一有效使用此方法的方法是为您知道是资源消耗的应用程序编写包装器脚本(不能真正称为脚本,它是如此之小)。举例来说,您发现google-chrome使用大量CPU,可以将路径中的google-chrome二进制文件替换为:
#! /bin/bash
cpulimit --limit 70 /usr/bin/google-chrome-bin
我还没有测试过,所以带一点盐。在cpulimit的网站上,您似乎可以为不同应用程序上的cpu限制设置规则。我不确定,您必须看看。
尚未提到的另一种选择是cpufrequtils
,我已经安装在我的笔记本和Debian 6中使用它可以让你改变算法(州长,在cpufrequtils
术语),内核使用缩放时钟速率上下响应要加载-特别是,userspace
调速器允许您将频率锁定在您选择的某个位置(当然,CPU必须能够以这种速度运行)。
例如,我用它将Atom锁定在800MHz而不是1.6GHz。它很容易使用。
您可以使用脚本temp_throttle根据温度自动限制CPU内核。当您专注于更重要的事情时,它可以在后台运行。有关如何运行的示例:
sudo ./temp_throttle.sh 80 # Will limit CPU cores when 80C is reached.
*免责声明-我是temp_throttle的作者和维护者*
访问此页面,它说明了如何cpulimit
在Debian和Ubuntu中安装和使用:
http://www.howtoforge.com/how-to-limit-cpu-usage-of-a-process-with-cpulimit-debian-ubuntu
无需更改调节器,您只需要更改/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脚本。
(在此找到原始命令)
您可以用来renice
按进程或组ID更改进程的优先级。从以下示例中renice
:
调整nice值,以使进程ID 987和32的nice值较低:
renice -n 5 -p 987 32
如果用户具有适当的特权,请调整好值,以使组ID 324和76具有更高的好值:
renice -n -4 -g 324 76
调整nice值,以使数字用户ID 8和sas用户具有较低的nice值:
renice -n 4 -u 8 sas