主页 > 软件知识 >

如何解决CPU过热100度自动关机问题

使用gentoo重新编译内核的Linux同学在编译小软件时可能会遇到这样的问题

(例如gcc),当CPU满负荷运行半小时左右,Linux突然提示类似如下信息:

达到临界温度(100℃),关闭

然后就开始步入init脚本的crash过程。因此,稍大的软件很难编译。

我也遇到了这个问题,困惑了一个半月。转了几圈,终于找到问题并解决了。

首先这个问题与内核的acpi模块和acpid守护进程、processer.ko、fan.ko、thermal.ko、button.ko以及/proc/acpi/目录下的文件无关,并且/sys/devices/system/cpu/目录下的文件无关。

如何解决CPU过热100度自动关机问题 [*] CPU Frequency scaling [ ] Enable CPUfreq debugging <*> CPU frequency translation statistics [*] CPU frequency translation statistics details Default CPUFreq governor (ondemand) ---> -*- 'performance' governor <*> 'powersave' governor <*> 'userspace' governor for userspace frequency scaling <*> 'ondemand' cpufreq policy governor <*> 'conservative' cpufreq governor *** CPUFreq processor drivers *** <*> ACPI Processor P-States driver AMD Mobile K6-2/K6-3 PowerNow! AMD Mobile Athlon/Duron PowerNow! AMD Opteron/Athlon64 PowerNow! Cyrix MediaGX/NatSemi Geode Suspend Modulation Intel Enhanced SpeedStep (deprecated) -*- Built-in tables for Banias CPUs Intel Speedstep on ICH-M chipsets (ioport interface) Intel SpeedStep on 440BX/ZX/MX chipsets (SMI interface) Intel Pentium 4 clock modulation nVidia nForce2 FSB changing Transmeta LongRun

内核中的CPU Frequency Scaling功能基本上可以分为三个部分:基本选项、调控器(策略)模块和驱动模块。

如何解决CPU过热100度自动关机问题

"Default CPUFreq Governor (on demand) --->" 这一行和它下面的部分是调控器(policy)模块。目前有五个掉落:“性能”、“节能”、“用户空间”、“按需”、“保守”。频率策略模块,其中:

'performance':高性能意味着CPU始终工作在最高频率,

'powersave':节能,CPU始终坚持使用最低频率工作,

'userspace':用户空间程序,CPU的频率根据用户空间程序通过/sys文件系统设置,

'ondemand':按需动态,CPU频率根据实际运行情况动态调整,

'conservative':conservative dynamiccpu自动关机软件,CPU频率根据实际运行情况进行保守动态调整;

*** CPUFreq 处理器驱动程序 *** 以下部分是针对这些 CPU 的驱动模块。我的 Intel T2330 使用 ACPI 处理器 P-States 驱动程序。

以上是内核对CPU降频功能的支持。上面的列表可以作为您配置CPU Frequency Scaling时的参考。四个基本选项cpu自动关机软件,除按需调试外,其余确定;五位州长推荐y,至少m;驱动模块,系统在使用的CPU对应的驱动模块是y或者m,剩下的m或者n。

插曲:内核配置的YNM

Linux 内核配置包含许多选项。对于每个配置选项,用户可以回答 y、m 或 n。其中y表示对应特性的支持或设备驱动被编译进内核; m 表示将相应特性的支持或设备驱动程序编译成可加载模块,系统或用户在必要时可以将其添加到内核中; n 表示内核未编译为包含相应的功能或驱动程序。

如何解决CPU过热100度自动关机问题

你可以参考这篇文章如何编译Linux内核

如果编译内核时没有开启对手动降频的支持,或者没有编译所需的驱动模块和调控器(策略)模块,或者没有加载相应的降频驱动模块和调控器(策略)当系统启动时)模块,或者没有设置合适的当前调控器(策略)(例如,设置了性能调控器)。如果硬件散热设施不够强,CPU 会逐渐过热。当达到阈值时,系统将自动关闭以保护自身。 这就是困扰我一个半月的自动关机的原因。

了解原理,解决方法很简单。该问题可以通过在内核中正确配置CPU Frequency Scaling功能并配置cpu-frequtils软件设置合适的调控器来解决。 #cpufreq-set -g ondemand -c 0

关于电脑电源管理和CPU降频的更多信息,请参考Gentoo的电源管理指南

============== 2014 年 9 月 30 日减少========================== ================================================== ================================================== ============================================================================================================================================================================================================================

没想到这么多人关注这个帖子。需要说明的是,通过将CPUfreq的调速器设置为on demand来防止CPU在100℃自动关机,只是为了避免成品系统散热不良,避免系统关机的“无奈”方式。避免 CPU 在 100 C 时自动关机的根本解决方案是提高冷却系统的容量,而不是 CPUfreq。另外将CPUfreq的调速器设置为性能也太有效了,无法测试散热系统设计是否符合标准。一个优秀的系统会稳定在 60 C。 即使达到 100 C,也会降低风扇的空转速度以稳定温度平衡。不会导致崩溃。许多旗舰笔记本电脑和铝镁商务笔记本电脑都符合此类设计准则。