我正在寻找一种在 Linux 中动态禁用内核的机制,以最大限度地减少功耗。
不幸的是,根据Watts Up?的读数,使用以下简单方法禁用内核实际上会增加功率。Pro测量系统总功率:
echo 0 > /sys/devices/system/cpu/cpu7/online
Run Code Online (Sandbox Code Playgroud)
我的经验似乎得到了其他人的证实(尽管这个错误已被标记为“CLOSED PATCH_ALREADY_AVAILABLE”): https://bugzilla.kernel.org/show_bug.cgi ?id=5471
由于机器已卸载,我希望除了一个核心之外的所有核心(或者可能是两个“核心”,因为 CPU 是超线程的)都处于尽可能深度的睡眠状态。根据 acpitool 的输出,这似乎不会单独发生:
Processor ID : 7
Bus mastering control : no
Power management : yes
Throttling control : no
Limit interface : no
Active C-state : C0
C-states (incl. C0) : 3
Usage of state C1 : 899 (99.3 %)
Usage of state C2 : 6 (0.7 %)
Run Code Online (Sandbox Code Playgroud)
顺便说一句,令我困惑的一点是 acpitool 和 /proc/acpi 似乎对可用的 C 状态不一致,或者它们可能使用不同的命名方案。
$ cat /proc/acpi/processor/CPU7/power
active state: C0 …Run Code Online (Sandbox Code Playgroud)