kidle_inject 无缘无故地消耗 CPU 能力

kidle_inject 无缘无故地消耗 CPU 能力

我在 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=enableGRUB_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

相关内容