传输层协议

传输层协议

当运行像 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

传输层协议

Arch Linux

TLP 为您带来了 Linux 高级电源管理的好处,无需了解每个技术细节。TLP 附带已针对电池寿命优化的默认配置,因此您可以直接安装并忘记它。不过,TLP 具有高度可定制性,可以满足您的特定要求。

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

在使用其他软件包多次尝试和失败后,我使用 TLP 取得了巨大成功。它提供了卓越的风扇控制,并与thermaldp 状态

由于这些安装说明对于 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 实际操作

这是屏幕截图强力夹钳注射睡眠周期:

Kidie 注射液

通常,在观看 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 1Conky 显示。在 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>

相关内容