问题描述
我在 i5-3250M、6GB RAM 戴尔 Inspiron 笔记本电脑上使用 ubuntu 14.04 LTS。我一直从我的 CPU 使用率监视器注意到我的 CPU 使用率很高(没有使用真正密集的东西)并且导致过热。
我从系统监视器上检查过,起初似乎是我的显卡有问题(AMD Radeon 7670M – 带有 Intel HD 4000 的混合显卡)。无论如何,我安装了 fglrx-updates(唯一一个真正解决了过热问题的人 – fglrx 和 xorg 没有帮助)并且事情运行得更顺畅了。
我还安装了 intel p-state 和 heatd。把它放在省电州长上,但仍然没有运气。还安装了tlp(它们之间没有冲突)。
尝试查看故障是来自 compiz 还是 adobe-flash。没运气。此外,HTML5 在一段时间后使用了大量 CPU,并且它落后于我的所有内容。
完成所有这些之后,我查看了 $top 命令的结果,罪魁祸首似乎是 kidle_inject。它每次都使用大约 50% 的 CPU。我忍不住注意到它似乎有四个模块 – kidle_inject/0 到 kidle_inject/3。
那么,这个 kidle_inject 是什么?我一直无法找到有关该主题的结论性信息。当我使用资源密集型的东西并且在终止使用后它继续占用我的 cpu 一两分钟时,它似乎已经打开。
我该如何解决这个问题,以便我的组合最终可以使用?我说的是 low-performance 使用中的最低温度为 70C。我非常依赖 linux,我想继续使用 ubuntu(因为我已经习惯了它并且越来越喜欢它)。
——不得不说,这不是我机器的错。当它在 Windows 7 上运行时,它在低温下运行得非常好。
最佳方案
因为您启用了 Intel P-state(通过 GRUB_CMDLINE_LINUX_DEFAULT
中的 intel_pstate=enable
),所以您还启用了 powerclamp 驱动程序。 powerclamp 驱动程序正在努力使处理器保持在 low-power 状态,以便降低功耗,并且不需要那么多冷却。
为此,它通过注入空闲时间强制 CPU 上的每个线程空闲一段时间。通常,该金额为 50%。您看到的每个 kidle_inject
进程的 50% 实际上并没有导致 CPU 工作;相反,它告诉 CPU 不要工作,从而降低功耗。请注意,整体 CPU 使用率不包括 kidle-inject
。
正如@ElderGeek 指出的那样,您可以告诉驱动程序注入较少的空闲时间。但是,我尝试了此方法,但没有成功。可能是内核还不支持;可能是 powerclamp 忽略了请求。
次佳方案
我认为这里一定存在某种错误,因为在我的系统上,kidle_inject 在所有 CPU 中注入了 50%,因此当我运行一个单线程进程时,它只能获得它所运行的 CPU 的剩余 50%。 rmmod intel_powerclamp
修复了这个问题。
第三种方案
如果你看一下温度和跳闸点
/sys/class/thermal/thermal_zone0/temp
和
/sys/class/thermal/thermal_zone0/trip_point_0_temp
您可能会发现(正如我所做的那样,然后发现自己在这个问题中),您的系统运行得如此热,以至于它通过注入 @elder-geek 提到的空闲周期来管理温度。
就我而言,这是迄今为止一年中最热的一天,我的风扇坏了,但由于此功能,我的笔记本电脑幸免于难。
第四种方案
功率钳位驱动器作为冷却设备注册到通用热层。目前,它不受任何热区的约束。
这是我的一个系统中的一个示例。
grep . /sys/class/thermal/cooling_device*/type
/sys/class/thermal/cooling_device0/type:Fan
/sys/class/thermal/cooling_device10/type:LCD
/sys/class/thermal/cooling_device1/type:Fan
/sys/class/thermal/cooling_device2/type:Fan
/sys/class/thermal/cooling_device3/type:Fan
/sys/class/thermal/cooling_device4/type:Fan
/sys/class/thermal/cooling_device5/type:Processor
/sys/class/thermal/cooling_device6/type:Processor
/sys/class/thermal/cooling_device7/type:Processor
/sys/class/thermal/cooling_device8/type:Processor
/sys/class/thermal/cooling_device9/type:intel_powerclamp
示例用法: – 注入 25% 空闲时间:
sudo sh -c "echo 25 > /sys/class/thermal/cooling_device9/cur_state
来源:https://www.kernel.org/doc/Documentation/thermal/intel_powerclamp.txt