软件吧
登录注册账号
/posts/linux-1-2w-0-4w
电脑必备

给旧笔记本装轻量Linux后,我把休眠功耗从1.2W压到0.4W,说下折腾过程

极客阿凯 80 0 13

上个月把一台吃灰的ThinkPad X230翻出来装Debian 12,本来只想当个备用机,结果插着功率计一测,休眠状态居然还有1.2W的功耗。虽然看着不多,但24小时挂着一年下来也十度电了,对我这种喜欢抠细节的人来说不能忍。

先说测试环境:X230 i5-3320M,8G内存,换了块480G的SATA固态,系统Debian 12 minimal安装,内核6.1。功率计是某宝几十块的那种,精度到0.1W,虽然不算专业设备,但同一台机子前后对比足够用了。

第一轮:默认休眠(suspend to RAM)
直接systemctl suspend,功率计稳定在1.2W左右。这个数值其实偏高,正常笔记本S3休眠应该在0.5W以下。我先怀疑是USB设备在持续供电,cat /proc/acpi/wakeup一看,果然EHC1、EHC2两个USB控制器都是enabled状态。用echo EHC1 > /proc/acpi/wakeup关掉,再休眠,降到0.9W。有改善但还不够。

第二轮:查唤醒源和后台活动
cat /sys/power/pm_wakeup_irq和dmesg | grep -i wakeup翻了一遍,发现无线网卡和读卡器也在唤醒列表里。另外用powertop --auto-tune跑了一下,它建议把几个PCI设备的runtime PM打开。手动执行后,休眠功耗降到0.6W。

第三轮:固件和内核参数
这里有个坑:X230的BIOS里有个「Intel SpeedStep」和「PCIe ASPM」选项,默认是关的。进BIOS打开ASPM之后,休眠直接掉到0.4W。另外内核参数加了pcie_aspm=force(这个有风险,老硬件可能不稳,我跑了一周没出问题才敢说)。

最终结果

  • 默认:1.2W
  • 关USB唤醒:0.9W
  • 开runtime PM:0.6W
  • BIOS开ASPM + 内核参数:0.4W

前后差了3倍,一年省下来的电费大概够买杯咖啡,但主要是心里舒服。

几个提醒

  1. pcie_aspm=force不是所有机器都能用,我另一台台式机加了直接起不来,得进恢复模式删参数。
  2. 关USB唤醒之后,USB键盘鼠标唤醒不了,得按电源键。这个看个人取舍。
  3. 功率计精度有限,0.1W级别的差异可能有误差,但趋势是明确的。

我现在的做法是手动控制:休眠前跑一个脚本,先关掉不需要的唤醒源,再挂起。自动化的部分只保留powertop --auto-tune,因为它可逆,出问题重启就恢复。之前写自动备份脚本失控过一次,现在对全自动的东西都留个手动开关。

问一下各位:你们测过自己笔记本的休眠功耗吗?有没有遇到BIOS里ASPM开了之后反而更耗电的玄学情况?我另一台戴尔的机器开了ASPM休眠功耗不降反升,到现在没想明白。

登录后可以为帖子点赞,但本帖内容对所有人开放阅读。

社区回应

0 Replies

还没有回应,抢一个沙发。

登录后可以回应和点赞,但本帖内容对所有人开放阅读。