我有一个程序,我想根据输入测量其运行时间,但我的系统很旧,存在过热问题。让程序以满负荷运行大约 1 分钟通常会导致其因过热而进入休眠/关闭状态。
我正在寻找可以限制 CPU 使用率的方法。我查看了CPU限制但它通过多次暂停和继续程序来工作。在这种情况下它将如何工作?它会是在较慢的 CPU 上运行程序的估计值,还是会破坏计时结果?
有没有其他软件可以更统一地限制CPU使用率?
答案1
听起来您想限制 CPU 的速度或频率。Linux 内核应该能够做到这一点,如果您的 CPU 支持它,您可以让它只加速到较低的最大值。例如,如果您的 CPU 通常以 1、2 或 3 GHz 运行,您可以告诉它只以 1 或 2 GHz 运行,并且它应该比以 3 GHz 运行时保持低得多的温度。
您可以直接使用 sysfs / procfs 接口,但使用cpufreq
可能更容易。在 Debian/Ubuntu 上,该包名为 cpufrequtils,下面是Ubuntu 软件包搜索。
运行cpufreq-info
应该告诉您可用的 CPU、频率和调速器,以及 CPU 是否“以相同的硬件频率运行”或“需要通过软件协调其频率”。
例如,要将 cpu0 的最大频率设置为 1.5GHz,您可以运行:
cpufreq-set --cpu 0 --max 1.5GHz
不同的调节器和设置决定何时加速和减慢 CPU 的速度,将它们设置“错误”可能会让 CPU 看起来永远不想加速,或者永远不想减慢速度,但总的来说,我认为保守调节器比按需调节器更好(它通常是默认设置,如果你最近用奇怪的眼光看你的电脑,它似乎会加速 ;-) 例如,这个命令告诉保守调节器在 CPU 只有 50% 繁忙时减慢速度:
echo 50 | sudo tee /sys/devices/system/cpu/cpufreq/conservative/down_threshold
当然,我怀疑你的电脑出了物理问题。它不应该这样关机。
- 棉绒会堵塞风扇和气流吗?通风口被堵塞了吗?
- 风扇是全速运转吗?或者根本不运转?
- 散热器是否正确安装或者损坏?
它真的是因为 CPU 过热而关闭吗(日志支持它),还是电源放弃/过热?