性能被热浪打败了:给笔记本降降温

立夏了,在像烧烤盘的笔记本键盘上打字有点吃不消了。想想还是让手腕凉快一点比多出来的那点性能要更实用。查了查,然后将 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/>。转载请保留此信息及相应链接。

2 条关于 “性能被热浪打败了:给笔记本降降温” 的评论

  1. 折腾这么多不如淘宝20元买个usb电扇+30元的笔记本底座风扇管用。我实测过,温度瞬间下降15度。

    • 说得很有道理啊 :-D
      可能是因为我从来没想着在上面加东西,实在是背着到处跑的时候感觉累,就想再轻点呢

时间过去太久,评论已关闭。
如果您有话要说,请到讨论区留言并给出此文章链接。
谢谢您的理解 :-)