阻止cpu过热

当运行像blender这样的密集型应用程序时,我的CPU可以达到80.CI可以手动从BIOS中取消CPU的速度,但我想让我的电脑检测到CPU温度过高时的速度,并减慢速度,直到一切都冷却下来。 有没有办法自动执行此操作甚至手动方式来减慢ubuntu的CPU速度

针对Sandy Bridge和更新处理器的英特尔Ubuntu 16.04+解决方案

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

Linux热备份监控器(thermald)监控和控制笔记本电脑,平板电脑的温度,配备最新的英特尔沙桥和最新的英特尔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取得了巨大的成功。 它提供出色的风扇控制,可与thermaldp-states无缝协作

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

自从安装TLP以来, Powerclamp (如下所述)从未被再次调用过。


英特尔Powerclamp

英特尔的Powerclamp驱动程序在此定义( kernel.org – Intel Power Clamp.txt ),是上述thermald的一部分。 从链接直接引用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_raplintel_powerclamp你知道它正在工作,只是等待温度超过85C。


Conky展示的Powerclamp在行动中

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

Kidie注射液

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

  • 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℃以下。 当驱动程序运行时,您可能在video中分离了第二个暂停,并可能分割出第二个键盘和鼠标滞后。


禁用Intel Turbo Boost

回到Ubuntu 14.04的“酷时光”,英特尔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℃左右稳定,风扇性能最佳。


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

因为这是戴尔我已经安装了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下,这是准确的,我在Conky显示器中使用了temp 1 。 在Ubuntu 16.04升级后,我不得不参考此屏幕上未显示的第三个温度。 要查看REAL临时值,可以使用以下命令:

 $ 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内核模块/驱动程序。 当我谷歌那个驱动程序和I8K人报告这两个驱动程序导致系统冻结每10秒左右一瞬间。 我自己遇到了这个问题所以不得不删除I8K风扇控制

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

我为这个问题创建了一个程序。 根据所需温度限制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 )添加到启动列表中,并在启动时提示您输入密码; 然后,如果达到上述温度,则报告其动作:

在此处输入图像描述

你可以限制CPU频率,这样你就可以降低频率,它可以控制CPU的热量。

 cpufreq-selector -f