防止 CPU 过热

Qwe*_*tie 13 temperature cpu

当运行像搅拌机这样的密集型应用程序时,我的 CPU 可以达到 80.CI 可以从 BIOS 手动降低 CPU 的频率,但我想让我的电脑检测到 CPU 温度何时变得太高并减慢速度,直到一切都冷却下来。有没有办法自动或什至手动执行此操作来降低 ubuntu 的 CPU 速度

Win*_*nix 11

适用于 Sandy Bridge 和更新处理器的 Intel Ubuntu 16.04+ 解决方案

来自 ( wiki.debian.org -thermald ) 的 Debian (Ubuntu) 写了关于heatd 一个用于冷却平板电脑和笔记本电脑的 Linux 守护进程。这仅适用于 Sandy Bridge(第 2 代)和更新的 Intel Core。一旦系统温度达到某个阈值,Linux 守护进程就会激活各种冷却方法来尝试冷却系统。

Linux 热守护进程 (thermald) 使用最新的 Intel sandy Bridge 和最新的 Intel CPU 版本监控和控制笔记本电脑、平板电脑的温度。一旦系统温度达到某个阈值,Linux 守护进程就会激活各种冷却方法来尝试冷却系统。

它以两种模式运行:

零配置模式

  • 对于大多数用户来说,这应该足以控制系统的 CPU 温度。这使用 DTS 温度传感器并使用 Intel P 状态驱动程序、功率钳位驱动程序、运行平均功率限制控制和 cpufreq 作为冷却方法。

用户自定义配置模式

  • 这允许在热 XML 配置文件中进行 ACPI 样式配置。这可用于修复有问题的 ACPI 配置或通过添加更多传感器和冷却设备进行微调。这是在用户模式下实施闭环热控制的第一步,可以根据社区反馈和建议进行改进。

如何安装

apt-get install thermald
Run Code Online (Sandbox Code Playgroud)

TLP

Arch Linux

TLP 为您带来 Linux 高级电源管理的好处,而无需了解每一个技术细节。TLP 带有已针对电池寿命进行了优化的默认配置,因此您可能只需安装并忘记它。尽管如此,TLP 是高度可定制的,以满足您的特定要求。

请阅读上面完整的 Arch Linux TLP 链接。Nvidia 存在需要更改配置的问题。

在使用其他软件包进行多次试验和错误之后,我使用 TLP 取得了巨大成功。它提供卓越的风扇控制,并与热态p 态无缝协作

由于Ubuntu 15.04+ 的这些安装说明提到 TLP 不仅可以减少过热,还可以延长电池寿命。

自从安装 TLP 后,Powerclamp(如下所述)再也没有被调用过。


英特尔 Powerclamp

Intel 的Powerclamp驱动程序在此处定义(kernel.org - Intel Power Clamp.txt),并且是上述heatd 的一部分。来自链接的Powerclamp的直接报价:

考虑以下情况:由于功率预算、热约束或噪声水平,必须在运行时降低系统功耗,并且不首选主动冷却。必须执行软件管理的被动功耗降低,以防止针对灾难性场景设计的硬件操作。

目前,P 状态、T 状态(时钟调制)和 CPU 离线用于 CPU 节流。

在 Intel CPU 上,C 状态可有效降低功耗,但到目前为止,它们仅根据工作负载机会性地使用。随着intel_powerclamp驱动的发展,引入了跨所有在线CPU线程同步空闲注入的方法。目标是实现强制和可控的C-state居住。

已经在功率、性能、可扩展性和用户体验方面进行了测试/分析。在许多情况下,明显优于使 CPU 离线或调制 CPU 时钟。


您如何知道 Powerclamp 正在运行?

当您的风扇通风口有太多灰尘和棉绒时, Powerclamp可能每年只显示一次。那么你怎么知道它实际上是在后台运行呢?用:

lsmod | grep intel
Run Code Online (Sandbox Code Playgroud)

您应该会看到一个类似于以下内容的列表:

btintel                16384  1 btusb
bluetooth             520192  29 bnep,btbcm,btrtl,btusb,rfcomm,btintel
intel_rapl             20480  0
intel_powerclamp       16384  0
   (.... more intel drivers ....)
snd                    81920  18 snd_hwdep,snd_timer,snd_hda_codec_hdmi,snd_hda_codec_idt,snd_pcm,snd_seq,snd_rawmidi,snd_hda_codec_generic,snd_hda_codec,snd_hda_intel,snd_seq_device
Run Code Online (Sandbox Code Playgroud)

如果你看到intel_rapl并且intel_powerclamp你知道它正在工作并且只是等待温度超过 85C。


Conky 展示的 Powerclamp 动作

这是Powerclamp注入睡眠周期时的屏幕截图:

小童注射液

通常在此系统上,当观看 HTML5 视频并打开 10 个 Chrome 标签时,CPU 时钟速度为 2400 Mhz 到 3400 Mhz。通常情况下,8 个 CPU 的 CPU 利用率约为 9% 到 12%。当事情变得太热 ( 86C ) Powerclamp开始时,会发生这种情况:

  • CPU 速度降低到 1200 Mhz。
  • CPU 利用率最高可达 80%。这是误导,因为额外的 70% 是睡眠时间。
  • 前 9 个 CPU 进程通常是 5 或 6 个 Chrome 进程加上 Xorg、Conky、Pulse Audio 和偶尔的 kworker。但是现在前 10 名中有 8 个是Kidle_inject/x进程,x从 0 到 7。对于前 8 个 CPU。

Powerclamp驱动程序运行,直到再次临时工低于85℃。在驱动程序运行时,您的视频可能会瞬间暂停,并且可能会瞬间出现键盘和鼠标滞后。


禁用 Intel Turbo Boost

回到 Ubuntu 14.04 Intel Turbo Boost 的“酷旧时代”被打破,所以我的处理器速度在 1200 Mhz 和 2400 Mhz 之间波动。升级到 Ubuntu 16.04 后,它会上升到 3400 Mhz (3.4 Ghz),因为 Turbo Boost 终于可以工作了。但它也提高了热量。

要禁用 Intel Turbo Boost,请使用:

echo "1" | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo
Run Code Online (Sandbox Code Playgroud)

这种情况下的短期修复

为了“创可贴”解决这个问题,我将带有双风扇的旧笔记本电脑散热垫从壁橱中拉出并弹出到笔记本电脑下方。在相同的工作量下,这将温度降至 63C。

下一步将是压缩通风口中的空气。之后的最后一步将是新的冷却散热器,带有用于 CPU 和 GPU 的管道。在该操作中还需要良好的导热膏,例如北极银 5。去年已经安装了一个新风扇,看起来运行正常。

2017 年 1 月 25 日更新

用压缩空气吹出风扇通风口,温度从 63C 降至 56C。请注意,这仍然是使用笔记本电脑的散热垫。

2017 年 8 月 6 日更新

已经使用TLP(如上所述)好几个月了,温度稳定在 50C 左右,风扇性能最佳。


注意过多的风扇控制驱动程序

因为这是戴尔,我安装了 I8K 风扇监视器 / 控制,希望它能越来越快地加速风扇。当我输入时,sensors我得到:

$ sensors
dell_smm-virtual-0
Adapter: Virtual device
Processor Fan: 3963 RPM
CPU:            +63.0°C  
Ambient:        +49.0°C  
GPU:            +54.0°C  
Other:          +79.0°C  

acpitz-virtual-0
Adapter: Virtual device
temp1:        +27.8°C  (crit = +106.0°C)
temp2:        +29.8°C  (crit = +106.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Physical id 0:  +65.0°C  (high = +87.0°C, crit = +105.0°C)
Core 0:         +65.0°C  (high = +87.0°C, crit = +105.0°C)
Core 1:         +64.0°C  (high = +87.0°C, crit = +105.0°C)
Core 2:         +63.0°C  (high = +87.0°C, crit = +105.0°C)
Core 3:         +57.0°C  (high = +87.0°C, crit = +105.0°C)
Run Code Online (Sandbox Code Playgroud)

忽略虚拟临时工,他们出去吃午饭了。在 Ubuntu 14.04 下是准确的,我temp 1在 Conky 显示中使用过。在 Ubuntu 16.04 升级后,我不得不参考此屏幕上未显示的第三个温度。要查看真实温度,您可以使用以下命令:

$ cat /sys/class/thermal/thermal_zone*/temp
27800
29800
62000
Run Code Online (Sandbox Code Playgroud)

当我输入:

$ lsmod |grep dell
dell_wmi               16384  0
sparse_keymap          16384  1 dell_wmi
dell_laptop            20480  0
dell_smbios            16384  2 dell_wmi,dell_laptop
dcdbas                 16384  1 dell_smbios
dell_smm_hwmon         16384  0
wmi                    16384  1 dell_wmi
video                  40960  3 dell_wmi,dell_laptop,i915
Run Code Online (Sandbox Code Playgroud)

我看到dell_smm_hwmon内核模块/驱动程序。当我谷歌那个驱动程序和I8K人们报告这两个驱动程序导致系统每 10 秒左右冻结一瞬间。我自己也遇到了这个问题,所以不得不移除I8K 风扇控制

还有许多其他实用程序和冷却方法,但这正在获得TL;DR


Sep*_*ero 5

我为这个问题创建了一个程序。根据所需温度限制 CPU。它是这样运行的:

sudo ./temp_throttle.sh 80
Run Code Online (Sandbox Code Playgroud)

该命令将使您的 CPU 内核在达到 80 摄氏度时变慢。当温度下降时,将允许 CPU 内核再次运行得更快。您可以在此处找到temp_throttle


要在启动时使用 sudo 运行主脚本并在 gnome-terminal 中输入密码,可以创建一个小脚本:

#!/bin/bash

cd "/path/to/the/directory/temp-throttle-stable/"
gnome-terminal -e 'sudo ./temp_throttle.sh 80' --geometry=45x15 --hide-menubar --profile=hold  
Run Code Online (Sandbox Code Playgroud)

--geometry=45x15打开一个小的终端屏幕;--profile=hold使用一个名为“hold”的 gnome-terminal 配置文件,该配置文件必须已经使用“当命令退出时:保持终端打开”选项创建,--hide-menubar隐藏该窗口的菜单)

使其可执行后,就可以将这个小脚本(我们称之为temp_throttle_80.sh)添加到启动列表中,并在启动时提示您输入密码;然后,如果达到上述温度,则报告其动作:

在此处输入图片说明