Sunday, April 13, 2014

在Fedora 20上使用TLP进行笔记本电源管理

Update: TLP is currently in Fedora Official Repository. Use "dnf install tlp".

升级Fedora 20后发现笔记本电池的使用时间有所缩短,用powertop一看,处理文字时的耗电量就有20W,明显不正常。于是就看了一下pm-utils的scripts。果不其然,/usr/lib64/pm/power.d下面空空如也。我东拼西凑了一个powersave script, 放到/etc/pm/power.d下面。后来发现,拔下电源后脚本没有运行,只有手动执行pm-powersave true才可以生效。查了一下,发现pm-utils已经deprecated了,只能另寻方案。

Arch wiki推荐用acpid,不过它只能在有ACPI事件时运行某个脚本。这样就需要自己写一个开机启动脚本判断是否处于电池模式,相当不爽。

后来,在Fedora论坛上发现了一个相关的讨论,有用户推荐用TLP(主页)。 这个东西的功能很强大,可以在电池模式和市电模式采用不同的电源配置(硬盘,WLAN,WWAN,蓝牙,USB,声卡,显卡,SATA控制器,PCIE等等)。此外,它还可以配置Thinkpad电池的thresholds.其配置文件在/etc/default/tlp,几乎不需要太大改动。

使用后效果还是相当明显的,电池模式下功耗降低到了15W,可以多用半小时啦。这里凸显了Linux发行版和Windows的差别,一个电源管理都有好多套方法。说不定什么时候又搞出个更强大的。


tlp的实现原理

tlp本身是用bash脚本写的,它依赖于其他程序,比如hdparm, iwconfig, rfkill,tpacpi-bat等等。

tlp不是一个daemon。在系统启动时,systemd会运行一次tlp,它根据系统的电源模式应用相应的设置,然后退出。此外,/usr/lib/udev/rules.d/下面还有一个40-tlp.rules,可以在发生电源变化时再次运行tlp。

突然觉得要研究一下systemd和udev。

目前。tlp已经加入fedora官方源了。只需要sudo yum install tlp.

No comments:

Post a Comment