当运行像 blender 这样的密集型应用程序时,我的 CPU 可以达到 80。CI 可以从 BIOS 手动降低 CPU 频率,但我希望我的电脑能够检测到 CPU 温度何时过高,并降低速度直到一切冷却下来。有没有办法自动执行此操作,或者甚至手动从 ubuntu 降低 CPU 速度
答案1
适用于 Sandy Bridge 和较新处理器的 Intel Ubuntu 16.04+ 解决方案
从 (wiki.debian.org-thermald)Debian(Ubuntu)的文章thermald 用于冷却平板电脑和笔记本电脑的 Linux 守护进程。这仅适用于 Sandy Bridge(第二代)和较新的 Intel Cores。一旦系统温度达到某个阈值,Linux 守护进程就会激活各种冷却方法来尝试冷却系统。
Linux 热守护进程 (thermald) 监控和控制配备最新 Intel sandy bridge 和最新 Intel CPU 版本的笔记本电脑、平板电脑的温度。一旦系统温度达到某个阈值,Linux 守护进程就会启动各种冷却方法来尝试冷却系统。
它以两种模式运行:
零配置模式
- 对于大多数用户来说,这足以控制系统的 CPU 温度。它使用 DTS 温度传感器,并使用英特尔 P 状态驱动程序、功率钳位驱动程序、运行平均功率限制控制和 cpufreq 作为冷却方法。
用户定义配置模式
- 这允许在热 XML 配置文件中进行 ACPI 样式配置。这可用于修复有缺陷的 ACPI 配置或通过添加更多传感器和冷却设备进行微调。这是在用户模式下实现闭环热控制的第一步,可以根据社区反馈和建议进行增强。
如何安装
apt-get install thermald
传输层协议
TLP 为您带来了 Linux 高级电源管理的好处,无需了解每个技术细节。TLP 附带已针对电池寿命优化的默认配置,因此您可以直接安装并忘记它。不过,TLP 具有高度可定制性,可以满足您的特定要求。
请阅读上面的完整 Arch Linux TLP 链接。Nvidia 存在问题,需要更改配置。
在使用其他软件包多次尝试和失败后,我使用 TLP 取得了巨大成功。它提供了卓越的风扇控制,并与thermald和p 状态。
由于这些安装说明对于 Ubuntu 15.04+,提到 TLP 不仅可以减少过热,还可以延长电池寿命。
自安装 TLP 以来,强力夹钳(如下所述)从未再次被调用。
英特尔 Powerclamp
英特尔强力夹钳驱动程序定义在这里(kernel.org - 英特尔功率钳位.txt)并且是thermald如上所述。直接引用强力夹钳来自链接:
考虑这样一种情况:由于功率预算、热约束或噪声水平,系统运行时必须降低功耗,并且不推荐主动冷却。必须执行软件管理的被动功率降低,以防止为灾难性场景设计的硬件操作。
目前,P 状态、T 状态(时钟调制)和 CPU 离线用于 CPU 节流。
在 Intel CPU 上,C 状态可有效降低功耗,但目前仅根据工作负载适时使用。随着 intel_powerclamp 驱动程序的开发,引入了在所有在线 CPU 线程上同步空闲注入的方法。目标是实现强制且可控的 C 状态驻留。
已在功耗、性能、可扩展性和用户体验方面进行了测试/分析。在许多情况下,与使 CPU 脱机或调节 CPU 时钟相比,它显示出明显的优势。
您如何知道 Powerclamp 正在运行?
强力夹钳每年可能只会出现一次,即风扇通风口积满灰尘和棉绒。那么你怎么知道它实际上是在后台运行的呢?使用:
lsmod | grep intel
您应该看到类似这样的列表:
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
如果您看到intel_rapl
并且intel_powerclamp
知道它正在工作,只需等待温度超过 85C。
Conky 展示的 Powerclamp 实际操作
这是屏幕截图强力夹钳注射睡眠周期:
通常,在观看 HTML5 视频并打开 10 个 Chrome 标签时,此系统的 CPU 时钟速度为 2400 Mhz 至 3400 Mhz。通常,8 个 CPU 的 CPU 利用率约为 9% 至 12%。当情况变得太热时(86C)强力夹钳开始起作用,发生以下情况:
- 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。
这强力夹钳驱动程序运行直至温度再次降至 85C 以下。驱动程序运行时,您的视频可能会瞬间暂停,键盘和鼠标也可能会瞬间延迟。
禁用英特尔睿频加速
回到 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
在这种情况下的短期修复
为了“临时”解决这个问题,我从柜子里拿出了带有双风扇的旧笔记本电脑散热垫,放在笔记本电脑下面。在同样的工作量下,温度降到了 63 摄氏度。
下一步是将空气压缩到通风口。之后,最后一步是安装新的冷却散热器,并连接用于 CPU 和 GPU 的管道。该操作还需要使用 Arctic Silver 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)
别管虚拟临时工了,他们出去吃午饭了。在 Ubuntu 14.04 下,这些是准确的,我使用了temp 1
Conky 显示。在 Ubuntu 16.04 升级后,我不得不参考此屏幕上未显示的第三个温度。要查看真实的temps你可以使用此命令:
$ cat /sys/class/thermal/thermal_zone*/temp
27800
29800
62000
当我输入:
$ 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
我看到了dell_smm_hwmon
内核模块/驱动程序。当我在 Google 上搜索该驱动程序时,I8K
人们报告说这两个驱动程序导致系统每 10 秒左右冻结一瞬间。我自己也遇到了这个问题,所以不得不删除I8K 风扇控制。
还有许多其他实用程序和冷却方法,但这种方法正在总结。
答案2
我专门为这个问题创建了一个程序。根据所需温度限制 CPU。它的运行方式如下:
sudo ./temp_throttle.sh 80
该命令将使 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
(--geometry=45x15
打开一个小的终端屏幕;--profile=hold
使用一个名为“hold”的 gnome-terminal 配置文件,该配置文件必须已经创建并且带有选项“当命令退出时:保持终端打开”,--hide-menubar
隐藏该窗口的菜单)
使其可执行后,这个小脚本(我们称之为temp_throttle_80.sh
)就可以添加到启动列表中,并且在启动时会提示您输入密码;然后,如果达到提到的温度,则会报告其操作:
答案3
您可以限制 CPU 频率,这样就可以降低频率并控制 CPU 的热量。
cpufreq-selector -f <mention the frq u want in the Khz>