为什么 tick_sched_timer 在 Linux 上消耗如此多的电量

为什么 tick_sched_timer 在 Linux 上消耗如此多的电量

根据我的 powertop (在 5.3.1 内核上):

Power est.              Usage       Events/s    Category       Description
 ...
  3.85 W      7,7 ms/s     437,0        Timer          tick_sched_timer

笔记本电脑上的 3.85W 是巨大的,有时甚至高达 6W。我在早期的内核(5.0.x)上没有看到过这种情况,有人知道如何减少功耗吗?

答案1

tick_sched_timer是 Linux 内核的 CPU 调度程序的一部分。在这种情况下,它很可能表示您的系统上有许多context switches和。cpu-wakeups

如果您发现它消耗了大量电量,那么很可能是系统上的某些东西导致了大量context switches和/或cpu-wakeups。——这可能与驱动程序有关;例如 gpu 驱动程序、蓝牙、wifi 等 - 它具有某种激进的更新间隔,或者可能是驱动程序正在触发许多硬件中断...但是,这也可能是由某些用户界面软件引起的......即使 powertop 也会稍微歪曲这些数字。

通过在不使用时禁用驱动程序(如蓝牙)(或如果未使用,则将其完全列入黑名单)或更改 CPU 调节器和/或使用各种省电方法/策略,您可能会获得一些成功...根据内核的配置方式,减少计时器滴答也可能节省电量。例如,某些内核可能使用 构建CONFIG_HZ_1000=y,而其他内核可能使用 构建CONFIG_HZ_250=y。后者应该可以节省一些电量。

Powertop 可能会向您提供原因提示;但这tick_sched_timer不是电池耗尽的根本原因(这只是一个症状)。很可能是内核中或用户空间中的其他线程、任务或进程。

答案2

虽然有点晚了,但是通过调整设置,我将使用量从平均 2W 以上降低到了 1W 以下tlpui

转到“处理器”并将 SCHED_POWERSAVE 选项勾选为开启。您还可以调整该类别中的许多 CPU 调整。

对于英特尔 CPU:转到图形并将 INTEL_GPU_FREQ 调整为较低的值,请务必事先检查可用的值sudo tlp-stat -g

对于 AMD CPU:转到图形并将 RADEON_POWER_PROFILE_ON_BAT 和 RADEON_DPM_STATE 分别设置为低和电池。

禁用蓝牙似乎也有帮助。

显然这并不理想,因为性能降低了不少,但如果您更看重电池寿命而不是性能,那么就选择这个。

相关内容