立夏了,在像烧烤盘的笔记本键盘上打字有点吃不消了。想想还是让手腕凉快一点比多出来的那点性能要更实用。查了查,然后将 Intel CPU 的 Turbo Boost 关掉、无线网卡的节能开启,最后还使用 ThinkFan 强制调低了风扇的阈值。总算是好点了。
电脑是几年前买的 ThinkPad T470s。到手就觉得英特尔的睿频可能并不适合轻薄笔记本。轻薄本的散热根本没法支撑它跑到睿频上限。自己换散热硅脂也效果不大。到热天了,就得减负了。
系统是 Linux 发行版 openSUSE Tumbleweed。所以下面说的就是在 openSUSE 中的操作。尽管下面的配置跟 openSUSE 社区对节能的理解不太一样,但是凉快才重要嘛。
禁用 Turbo Boost¶
可以通过修改 BIOS 设置来调整。缺点就是需要关机/开机。
命令行下也可以直接修改,
$ echo 1 | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo
好处是随时修改随时生效。需要的话可以立即改回去。缺点是可能会被系统的自动优化功能(不知道有没有,瞎猜的)悄悄改回去。
各种可能情况还没有充分考虑到并测试。也许直接写个脚本来用上面的指令修改参数会是控制 Turbo Boost 开启/关闭的最简单有效的方式。不过下面的 TLP 和 Laptop Mode Tools 的说明还是留着作参考吧。
本来以前用 TLP 很方便调整的。但是现在的 TLP(1.3.1 版)似乎不怎么好用了。而且它对无线节能模式的设定也没什么效果了。不知道是不是我的系统出了什么状况。经过查阅,决定装上 Laptop Mode Tools 来管理。启用定时任务后,默认情况下它会每隔 2 分半钟检查一下系统配置。
官方源里有,直接安装,
$ sudo zypper install laptop-mode-tools
运行服务并开启开机自启动,
$ sudo systemctl start laptop-mode.service && sudo systemctl enable laptop-mode.service
将配置文件 /etc/laptop-mode/conf.d/intel_pstate.conf
中以 _NO_TURBO
结尾的三个参数作修改。设置成 1
的话就是禁用睿频了。
当然其实下面这样设置可能更方便,
NOLM_AC_INTEL_PSTATE_NO_TURBO=0 LM_AC_INTEL_PSTATE_NO_TURBO=1 BATT_INTEL_PSTATE_NO_TURBO=1
这样的话,只要禁用 Laptop Mode Tools 服务就可以让笔记本在接通电源的情况下恢复使用睿频。(误)事实证明没有那么容易,还是需要全都设置为 1
才能达到目的。而用电池的时候最好还是不开启睿频吧,那点处理速度的提高并不会减少多少用电池工作的时间。
开启无线网卡节能模式¶
无线网卡是个发热大户。全速运行的时候能有 60 多摄氏度(此时 CPU 可能才 50 度)。开启节能模式后,最低能到 40 摄氏度左右。
查询无线网卡名称,假设正在用这个无线网卡连接上网,那就好办了,
$ sudo iw dev | awk '$1=="Interface"{print $2}'
实在不行将所有网卡列出来找一找也是个办法,
$ ip a
我的网卡名称是 wlp58s0
。看看无线网卡节能特性开启了没,
$ sudo iw dev wlp58s0 get power_save Power save: on
当然 on 就是开启了,off 就是没有开启。
命令行开启无线网卡节能模式,
$ sudo iw dev wlp58s0 set power_save on
但是不幸的是这个设置好像并不是 persistent 的。过一会儿不知道啥情况它就又回到全功率模式了。
另一个方法,参考这里,修改 KDE 中默认的网络管理工具 NetworkManager 的配置文件 /etc/NetworkManager/NetworkManager.conf
,在其中[connection]
的下面加一行,
wifi.powersave = 3
这个参数有四种取值,
0 - 使用默认值 1 - 不修改当前设定 2 - 关闭节能 3 - 开启节能
按说重启 NetworkManager 服务之后就可以了啊。可是不行,过一会儿使用 iw
指令查看,不知道怎么的它就又变成关闭节能状态了。这个问题不只我一个人头大。
最后,还是借助自动化工具吧。前面也提到了,TLP 在我这里不好用了。所以还是用上面安装的 Laptop Mode Tools。修改配置文件 /etc/laptop-mode/conf.d/wireless-power.conf
,将最后两行都改成 1
,如下,
WIRELESS_AC_POWER_SAVING=1 WIRELESS_BATT_POWER_SAVING=1
这样就可以了。
用 ThinkFan 自定义风扇强制降温¶
openSUSE 官方源里还没有 ThinkFan。社区个人源里有。但是看到那五花八门的版本号,我出现了选择障碍。于是决定自己从源码编译安装吧,虽然又要多装几个编译安装的工具包。
这个有点长了,暂时先不说编译安装的步骤了吧。官方文档里有,只是我们还需要几个工具包。但是因为我忘记记录了,所以也记不清楚到底是哪几个包了。使用 ccmake 的时候,缺什么包它也会提醒。我只记得官方文档里说的那个 libyaml-cpp-devel
在 openSUSE 里面包名称是 yaml-cpp-devel
。
如果嫌麻烦,还是从上面提到的社区个人源里面挑一个更新时间较近的来安装吧。
这里想补充记录的就是,openSUSE 默认安装的 thinkpad_acpi
并没有启用控制风扇的 fan_control
选项。需要自己修改该内核模块的加载参数。参考这个,下面这样操作就可以了,
$ sudo echo "options thinkpad_acpi experimental=1 fan_control=1" >/etc/modprobe.d/thinkpad_acpi.conf
之后重新加载该模块,
$ sudo rmmod thinkpad_acpi && sudo modprobe thinkpad_acpi
再一个就是,thinkfan 的配置文件,默认是 /etc/thinkfan.conf
。如果没有就需要自己创建。它以后(不太久的将来)会用 yaml 格式的,但是现在还支持简单格式的。关键是配置文件的内容,因为需要用到系统里的硬件路径,所以可能每个人的都不一样。Github 上有一篇较详细的介绍 thinkfan 配置的文章可以参考。同时 ArchLinux 上的介绍也很不错。
这两天温度降下来了,没法跟前几天特别热的时候做对比了。可能还需要根据再热一点的气温来调节一下 thinkfan 的控制参数。
好吧,暂时先写到这里吧。重点都已经记下来了。现在如果只是看看网页、写写文档,整机温度都低了很多。受益最大的就是手腕了。因为舒服了,干活效率也高了 :-D©
本文发表于水景一页。永久链接:<http://cnzhx.net/blog/optimisation-for-cool-over-perfomance-with-my-laptop/>。转载请保留此信息及相应链接。
折腾这么多不如淘宝20元买个usb电扇+30元的笔记本底座风扇管用。我实测过,温度瞬间下降15度。
说得很有道理啊 :-D
可能是因为我从来没想着在上面加东西,实在是背着到处跑的时候感觉累,就想再轻点呢