防止CPU过热


11

当运行诸如Blender之类的密集型应用程序时,我的CPU可以达到80.CI可以从BIOS手动降低CPU的频率,但是我想让我的电脑检测到CPU温度过高并放慢速度,直到一切冷却下来。有没有办法自动或手动地从ubuntu减慢CPU速度


2
同时,这看起来像是对Blender的功能请求。您可以手动使用Performance Governor,并通过系统监视器手动停止应用程序。
userDepth

Answers:


11

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

在(wiki.debian.org -thermald)中,有Debian(Ubuntu)撰写了有关Thermald 一个用于冷却平板电脑和笔记本电脑的Linux守护程序的文章。这仅适用于Sandy Bridge(第二代)和更新的Intel Core。一旦系统温度达到一定阈值,Linux守护程序就会激活各种冷却方法以尝试冷却系统。

Linux Thermal Daemon(thermald)通过最新的Intel sandy bridge和最新的Intel CPU版本监视和控制笔记本电脑,平板电脑中的温度。一旦系统温度达到一定阈值,Linux守护程序就会激活各种冷却方法以尝试冷却系统。

它以两种模式运行:

零配置模式

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

用户定义的配置模式

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

如何安装

apt-get install thermald

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),它是上述散热的一部分。链接中有关Powerclamp的直接报价:

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

当前,P状态,T状态(时钟调制)和CPU脱机用于CPU节流。

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

已经在功能,性能,可伸缩性和用户体验方面进行了测试/分析。在许多情况下,与使CPU脱机或调节CPU时钟相比,它具有明显的优势。


您怎么知道Powerclamp正在运行?

当您的风扇通风孔积满过多的灰尘和绒毛时, 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注入睡眠周期时的屏幕截图:

Kidie注射液

通常,在该系统上,观看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个CPU中有8个是kidle_inject / x进程,其中x从0到7。对于前8个CPU。

Powerclamp驱动程序运行,直到再次临时工低于85℃。在驱动程序运行时,您可能会在视频中暂停一秒钟,并且可能会暂停一秒钟的键盘和鼠标延迟。


禁用英特尔睿频加速

在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

在这种情况下的短期修复

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

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

更新2017年1月25日

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

更新2017年8月6日

已经使用TLP(如上所述)了许多个月,温度稳定在50摄氏度左右,风扇性能达到了最佳。


当心太多的风扇控制驱动器

因为这是一台Dell,所以我安装了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升级之后,我不得不参考此屏幕上未显示的第三个温度。要查看真实温度,可以使用以下命令:

$ 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风扇控件

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


哇,这就是答案。这里有很多很棒的东西。
Qwertie

我已经安装了散热片,但是如何运行powerclamp?它默认运行吗?试图超过什么温度?

@cipricus使用时:$ lsmod | grep power您应该看到:intel_powerclamp 16384 0。否则,由于某种原因,Powerclamp可能会被列入黑名单。阈值温度为85C,但我认为您可以更改。请参阅:bugs.launchpad.net/ubuntu/+source/linux/+bug/1389077
WinEunuuchs2Unix

4

我为这个问题创建了一个程序。根据所需温度限制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终端配置文件,该配置文件必须已使用“当命令退出时:保持终端打开”选项创建,--hide-menubar隐藏该窗口的菜单)

将其temp_throttle_80.sh设为可执行文件后,可以将该小脚本(称为)添加到启动列表中,并在启动时提示您输入密码。然后,如果达到上述温度,则报告其动作:

在此处输入图片说明


1
不错的脚本。我还编写了一个脚本,使PC在达到最高温度时进入睡眠状态。链接
肯恩

这是一个很好的答案,可以在16.04中工作


sudo我需要cron使用这些reboot选项的脚本。这样,启动时无需输入密码。还有其他方法可以做到,但是cron对我来说是最容易设置的。
WinEunuuchs2Unix

仅供参考,我在Intel Powerclamp上发布的答案将CPU调至最低速度。但是,它还会注入空闲状态以使CPU不执行任何操作。我认为您的脚本很棒,但您可能想知道英特尔在做什么。我相信它是开源的,如果您有兴趣可以学习。
WinEunuuchs2Unix

1

您可以限制CPU频率,以便降低频率并控制CPU的热量。

cpufreq-selector -f <mention the frq u want in the Khz>

这是永久性的,还是在重新启动后返回?
Qwertie 2013年

它是固定集,如果要修改它,则必须再次。
rɑːdʒɑ

您需要安装gnome-applets此软件才能正常工作
kiri 2013年

@ minerz029这是我的朋友的终端命令。
rɑːdʒɑ

1
@rajagenupula我收到一条找不到命令的错误消息The program 'cpufreq-selector' is currently not installed. You can install it by typing: sudo apt-get install gnome-applets
kiri
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.