我在 i5-3250M、6GB RAM 的 Dell Inspiron 笔记本电脑上使用 ubuntu 14.04 LTS。我一直从 CPU 使用率监视器中注意到我的 CPU 使用率很高(没有使用真正密集的程序),并且导致过热。
我从系统监视器检查,起初似乎问题出在我的显卡上(AMD Radeon 7670M - 混合显卡和 Intel HD 4000)。无论如何,我安装了 fglrx-updates(唯一一个真正解决了过热问题的产品 - fglrx 和 xorg 没有帮助),然后运行起来顺畅了一些。
我还安装了 intel p-state 和 thermald。将其置于 powersave 调节器上,但仍然没有成功。还安装了 tlp(它们之间没有冲突)。
尝试查看错误是否来自 compiz 或 adobe-flash。没有运气。此外,HTML5 占用大量 CPU,导致我的电脑上的所有功能都滞后。
完成所有这些操作后,我查看了 $top 命令的结果,罪魁祸首似乎是 kidle_inject。它每次都会使用大约 50% 的 CPU。我不禁注意到它似乎有四个模块 - kidle_inject/0 到 kidle_inject/3。
那么,kidle_inject 是什么?我还没有找到关于这个问题的结论。当我使用某些资源密集型的东西时,它似乎处于开启状态,并且在终止使用后,它继续占用我的 CPU 一两分钟。
我该如何修复这个问题,让我的电脑终于可以使用了?我指的是低性能使用时的最低温度为 70C。我严重依赖 Linux,我想继续使用 ubuntu(因为我已经非常习惯它了,而且我已经喜欢上它了)。
-- 我不得不说这不是我的机器的错。当它在 Windows 7 上运行时,它在低温下运行良好。
答案1
由于您启用了 Intel P-state(通过intel_pstate=enable
)GRUB_CMDLINE_LINUX_DEFAULT
,因此您还启用了 powerclamp 驱动程序。powerclamp 驱动程序正在努力让处理器保持低功耗状态,从而降低功耗,并且不需要太多的冷却。
为此,它会通过注入空闲时间强制 CPU 上的每个线程空闲一段时间。通常,这个量是 50%。您看到的每个进程的 50%kidle_inject
实际上并没有导致 CPU 工作;相反,它告诉 CPU不是工作,从而降低功耗。请注意,整体 CPU 使用率不是包括kidle-inject
。
正如@ElderGeek 所说,您可以告诉驱动程序注入较少的空闲时间。但是,我尝试过这个,但没有成功。可能是内核还不支持它;可能是 powerclamp 忽略了请求。
答案2
我认为这里肯定存在某种错误,因为在我的系统上,kidle_inject 在所有 CPU 中注入了 50%,因此当我运行单线程进程时,它只能获得其运行时剩余的 50% 的 CPU。 rmmod intel_powerclamp
修复了这个问题。
答案3
如果你看一下温度和跳闸点
/sys/class/thermal/thermal_zone0/temp
和
/sys/class/thermal/thermal_zone0/trip_point_0_temp
你可能会发现(就像我在这个问题上发现的那样),你的系统运行得太热了,以至于它通过注入空闲周期来管理温度@elder-geek提及。
就我而言,这是今年迄今为止最热的一天,我的风扇坏了,但由于这个功能,我的笔记本电脑还挺过来了。
答案4
powerclamp 驱动器已注册到通用热层作为冷却设备。目前,它尚未绑定到任何热区。
这是我的一个系统中的一个例子。
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