我运行分布式计算项目,这些项目通常要使用100%的CPU。如何根据温度而不是百分比使用率来限制CPU使用率?另外,保持Intel i5 24/7全天候运行的最高安全温度是多少?(没有CPU限制,FahCore_a4会使该计算机在82摄氏度下运行。)
我运行分布式计算项目,这些项目通常要使用100%的CPU。如何根据温度而不是百分比使用率来限制CPU使用率?另外,保持Intel i5 24/7全天候运行的最高安全温度是多少?(没有CPU限制,FahCore_a4会使该计算机在82摄氏度下运行。)
Answers:
此网页上有一个bash脚本,它将尝试将CPU保持在指定温度以下。http://seperohacker.blogspot.com/2012/10/linux-keep-your-cpu-cool-with-frequency.html
您只需要为其提供所需的最高温度,它就会限制您的CPU,以保持低于该温度。
无耻的插件-我编写并维护了上面的脚本。
这是我使用bash解决的方法。如果有人提出了更好的守护程序(最好保持在目标温度附近),请发布它。
#!/bin/bash
while true; do
val=$(sensors | awk '/Core 0/ {print $3}')
max="+60.0"
if [[ "$val" < "$max" ]]
then
killall cpulimit
sleep .1
else
cpulimit -e FahCore_a4 -l 99 &
sleep 1
fi
clear
sensors
done
CPU自身具有一种机制,如果温度过高,它将自行关闭电源。(如果您不禁用SMI中断,则可能不会,对此我不确定。)
主要的用户空间应用程序是lm-sensors
程序包。安装后,请运行sensors-detect
以对其进行设置,如果您的计算机相同,则可以运行一次,然后在所有地方使用得到的结果。
通过cpufreq驱动程序子系统可以轻松控制CPU频率。参见https://wiki.archlinux.org/index.php/CPU_Frequency_Scaling
您可以编写一个使用lm传感器轮询温度的守护程序,如果温度太高,则可以降低CPU频率。
这就是我解决过热问题的原因,这些问题不是由特定的过程引起的,而是由于笔记本电脑无法消除因长时间在高CPU负载下运行而产生的热量而造成的。da代码猴子本人提供的解决方案的主要区别在于,我使用cpu频率缩放,而不是在特定进程上使用cpulimit。由于我已经安装并运行了Psensor,因此我会背负Psensor。建议使用类似da code monkey的守护程序,但是需要两个阈值(最小和最大)。在Psensor(传感器首选项->警报)中,如果高于高阈值(我使用85)或低于低阈值(我使用80),则为相关传感器设置警报。在发出警报时执行的“首选项”->“传感器”->“脚本”中,我这样调用脚本heatcontrol.sh:
/ALLUSER/heatcontrol.sh按需省电82
第一个参数是有效的scaling_governor,它可以降低CPU频率,例如节电。第二个参数是大多数系统的默认scaling_governor-按需。第三个参数是在低阈值和高阈值之间的温度(确切的值并不重要)。Psensor增加了两个参数:传感器ID和报告的温度。
这是我的heatcontrol.sh脚本:
#!/bin/bash
# TempNZ is temperature reported by Psensor; strip of trailing °C
TempNZ=$5
bnum=`expr index "$TempNZ" "°"`
if (( bnum < 2 )); then
echo "ERROR"
fi
TempNZ=${TempNZ:0:$(($bnum-1))}
STR=$1
# Is this a low threshold alarm?
if [ "$TempNZ" -le "$3" ]; then
STR=$2
fi
sudo sh -c "echo '$STR' > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
# echo new scaling_governor
sudo cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# play sound - audio feedback - optional
paplay /usr/share/sounds/ubuntu/stereo/message-new-instant.ogg
对我来说很好用(UBUNTU 14.04 LTS)。
作为Linux和bash的新手,我使用了许多资源,包括:
https://wiki.archlinux.org/index.php/CPU_frequency_scaling
http://elinux.org/Jetson/Performance#Viewing_the_current_CPU_status