我运行分布式计算项目,通常需要使用 100% 的 CPU。如何限制 CPU 的温度使用率(而不是百分比使用率)?此外,保持 Intel i5 全天候运行的最高安全温度是多少?(没有 CPU 限制时,FahCore_a4 会导致这台机器在 82 摄氏度下运行。)
答案1
此网页上有一个 bash 脚本,它将尝试将您的 CPU 保持在指定温度以下。http://seperohacker.blogspot.com/2012/10/linux-keep-your-cpu-cool-with-frequency.html
您只需为其提供所需的最高温度,它就会限制您的 CPU 温度,以使其保持在该温度以下。
无耻的插件-我编写并维护了上述脚本。
答案2
以下是我使用 bash 解决该问题的方法。如果有人想出更好的守护进程(更适合保持在目标温度附近),请发布。
#!/usr/bin/env 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
答案3
CPU 本身具有一种机制,如果过热它就会自动关闭电源。(如果您禁用 SMI 中断则可能不会发生这种情况,对此我不确定。)
主要的用户空间应用程序是lm-sensors
软件包。安装后运行sensors-detect
进行设置,如果您的机器相同,您可以运行一次,并在任何地方使用结果。
CPU 频率可通过 cpufreq 驱动子系统轻松控制。请参阅https://wiki.archlinux.org/index.php/CPU_Frequency_Scaling
您可以编写一个使用 lm-sensors 来轮询温度的守护进程,如果温度太高则调低 CPU 频率。
答案4
“安全”温度
CPU 的最大安全温度通常在制造商的技术规格中指定。最高 100°C 很常见。您可能希望将温度保持在此值以下几°C 以留出一些余量(安全性和组件的使用寿命)。
此外,CPU 发热会将部分热量传递到计算机中物理上接近的其他组件。您可能需要在 CPU 以 100% 运行时进行一些测试并监控这些组件的温度,以检查您是否离它们太近他们的从长远来看,这是有限制的。最好在炎热的天气里测试。:)
温度调节
看这个答案更多细节。