我运行分布式计算项目,通常希望使用 100% 的 CPU。如何根据温度而不是百分比使用率限制 CPU 使用率?另外,保持英特尔 i5 24/7 全天候运行的最高安全温度是多少?(没有 CPU 限制 FahCore_a4 使这台机器在 82 摄氏度下运行。)
在此网页上有一个 bash 脚本,它会尝试将您的 CPU 保持在指定温度以下。http://seperohacker.blogspot.com/2012/10/linux-keep-your-cpu-cool-with-frequency.html
您只需要为其提供所需的最高温度,它就会限制您的 CPU 以努力保持在该温度以下。
无耻的插件-我编写并维护了上述脚本。
这是我使用 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
Run Code Online (Sandbox Code Playgroud)
CPU 本身有一种机制,如果温度太高,它会自行断电。(如果您禁用 SMI 中断,也许不会,我对此不确定。)
主要的用户空间应用程序是lm-sensors包。安装后运行sensors-detect进行设置,如果您的计算机相同,您可以运行一次,并在任何地方使用结果。
CPU 频率可以通过 cpufreq 驱动子系统轻松控制。参见https://wiki.archlinux.org/index.php/CPU_Frequency_Scaling
您可以编写一个守护程序,使用 lm 传感器来轮询温度,如果温度太高,则降低 CPU 频率。