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

立夏了,在像烧烤盘的笔记本键盘上打字有点吃不消了。想想还是让手腕凉快一点比多出来的那点性能要更实用。查了查,然后将 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
      可能是因为我从来没想着在上面加东西,实在是背着到处跑的时候感觉累,就想再轻点呢

雁过留声,人过留名

您的电子邮箱地址不会被公开。 必填项已用 * 标注

特别提示:与当前文章主题无关的讨论相关但需要较多讨论求助信息请发布到水景一页讨论区的相应版块,谢谢您的理解与合作!请参考本站互助指南
您可以在评论中使用如下的 HTML 标记来辅助表达: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>