为什么我的 CPU 忽略 cpupower 设置的最大频率以及如何防止我的 CPU 变得太热?

为什么我的 CPU 忽略 cpupower 设置的最大频率以及如何防止我的 CPU 变得太热?

我在我的 Lenovo T530 笔记本电脑上使用 Debian 10 (buster),4.19.0-16-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 GNU/Linux该笔记本电脑具有i7-3630QM.我已经很多年没有为频率缩放和温度烦恼了,但最近它已经成为一个问题。

当我尝试运行 CPU 密集型应用程序时,CPU 可能会在较长时间内变得非常热,我指的是 100°C 以上。现在这台笔记本电脑已经有八年多了,我不确定它还能用多久,所以我想

  1. 让它持续尽可能长的时间并且
  2. 减少噪音污染,因为风扇在高负载和高温度下会变得相当大声。

几年前有几个州长可以用来做到这一点,所以我很惊讶现在只有powersaveperformance。我尝试使用cpupower设置最大频率,例如 2.4GHz: cpufreq-set -u 2.4GHz

不幸的是,这似乎并没有真正起作用。cpupower frequency-info报告

  current policy: frequency should be within 1.20 GHz and 2.40 GHz.
                  The governor "powersave" may decide which speed to use
                  within this range.

但是当我启动 CPU 密集型应用程序(尤其是需要 3D 图形加速的应用程序)时,在我的例子中是游戏“Stellaris”,CPU 会变得非常热,这并不奇怪,因为cpupower frequency-info报告

  hardware limits: 1.20 GHz - 3.40 GHz
  available cpufreq governors: performance powersave
  current policy: frequency should be within 1.20 GHz and 2.40 GHz.
                  The governor "powersave" may decide which speed to use
                  within this range.
  current CPU frequency: Unable to call hardware
  current CPU frequency: 3.30 GHz (asserted by call to kernel)

这实际上是自相矛盾的。

现在这个问题已经被讨论过,例如问题,作者解决了他的回答。不过,也有人评论说,这不起作用。就我而言,它也不起作用。本期的另一位发帖人在他的文章中写道回答这也不起作用并且实际上链接到内核文档其中指出实际上不可能可靠地设置频率。

我的笔记本电脑的风扇最近已清洁,并已涂上新的导热膏,但正如我所说,这台机器很旧,而且仍然很热。不同的海报建议将最大负载设置为较低的百分比,这实际上有效,但并不能解决我的问题,因为 CPU 仍然会变得非常热。

有谁知道一种不同的、可靠的方法来限制CPU频率?在前面提到的 Stellaris 示例中,我想我注意到,当游戏加载时以及我在主菜单中时,CPU 试图将频率限制为 2.4GHz 的设定值。一旦我加载了保存文件并进入游戏本身,它就会飙升至最大频率。应用程序本身是否有可能覆盖这些值?

有谁知道还有其他方法可以阻止CPU达到如此高的温度吗?例如,是否可以为 CPU 开始自我调节时设置较低的温度阈值?

答案1

谢谢阿乔姆·S·塔什基诺夫我能够解决这个问题。他在评论中写道

尝试使用 acpi-cpufreq 代替 intel_pstate :https://silvae86.github.io/2020/06/13/switching-to-acpi-power

这样就成功了。

我必须acpi_cpufreq通过以下方式安装驱动程序(在我的情况下它已经安装了)apt-get

apt-get install acpi-support acpid acpi

/etc/default/grub通过添加到intel_pstate=disable进行编辑GRUB_CMDLINE_LINUX_DEFAULT,如下所示(在我的例子中):

GRUB_CMDLINE_LINUX_DEFAULT="quiet nosplash debug intel_pstate=disable"

然后运行update-grub并重新启动机器。因此,该intel_pstate驱动程序不再被使用,而是acpi_cpufreq被使用。除了有更多的州长可供选择(您可以阅读这里关于它们)最重要的是我现在可以打开调速ondemand器并设置最小和最大频率。并且一直保持这种状态。就我而言,我使用了

cpupower frequency-set -g ondemand -d 1.2GHz -u 2.0GHz

到目前为止,机器还没有变得太热。

[编辑] 在仍然遇到温度问题之后,我弄清楚了问题所在。这是GPU频率的问题,而且在使用3D应用程序时这个问题仍然出现。您/sys/kernel/debug/dri/0/i915_ring_freq_table可以看到 GPU 可以运行的最大频率对应于最大 CPU 频率。设置 CPU 频率后,还必须在/sys/class/drm/card0/gt_max_freq_mhz和 中调整 GPU 频率/sys/class/drm/card0/gt_boost_freq_mhz

相关内容