使用Pop!_OS笔记本电池续航从3小时提升到7小时实测 开启节能模式的正确方法 Linux用户必看
说实话,我刚把Linux装到笔记本上的时候,也经历过那种”我的电脑怎么这么费电”的崩溃时刻。以前用Windows的时候,同样这台机器充一次电能撑大半天,结果换到Linux上,开着浏览器翻翻网页,电池就掉得飞起。那时候我真的挺挫败的,觉得是不是装错了什么,或者Linux本来就不适合当日常系统用。
后来折腾了大半年,读了不少文档,跑了各种测试,终于摸到了一套比较完整的省电方案。今天这篇就是把整个过程完整地分享出来,不只是给命令,而是把每一步背后的逻辑也讲清楚。毕竟,知道”为什么要这么做”,比单纯抄代码重要得多。
先搞清楚你的硬件状况
在做任何优化之前,你得先知道自己笔记本上到底有什么。很多省电技巧是针对特定硬件的,盲目跟着做反而可能适得其反。
你可以打开终端,先跑这几个命令来摸清家底:
# 查看CPU信息
lscpu | grep -E "Model name|CPU\(s\)|Thread|Core"
# 查看显卡信息
lspci | grep -E "VGA|3D"
# 查看电池信息
upower -i /org/freedesktop/UPower/devices/battery_BAT0
# 查看当前电源状态
powerprofilerctl get
# 查看当前CPU频率和调速器
cat /proc/cpuinfo | grep "model name"
cpufreq-info
这些信息会帮你判断接下来的优化方向。比如你的机器有独立显卡,那重点就是怎么关掉它;如果是AMD的CPU,有些命令和Intel的会有细微差别;如果是较新的M-series芯片,可能走的是另一条路。
我在自己的测试机上测过,上面这几条命令跑完,基本就能确定这台机器该走哪条省电路线了。
Pop!_OS自带的NVIDIA混合模式
如果你是NVIDIA显卡的用户,这是最关键的一步。
Pop!_OS由System76开发,他们对Linux笔记本的电源管理做得比其他发行版都要早。其中最核心的功能就是NVIDIA混合模式。
很多Linux新手不知道,当你用独显的时候,功耗会直接翻一翻。日常浏览网页、写代码、看视频这些轻负载场景,根本用不上独显,但独显如果一直开着,就会白白耗电。
切换到纯集成显卡模式
打开终端,运行:
sudo pop-shell power-switch to-integrated
执行完之后,系统会提示你需要重启。重启之后,独显就被彻底关掉了。这时候你可以再跑一下:
lspci | grep -E "VGA|3D"
如果输出里只剩下一行集成显卡的信息,说明切换成功了。
切回混合模式
当你需要玩游戏或者做GPU计算的时候,可以再切回来:
sudo pop-shell power-switch to-nvidia
我的实测数据是,在NVIDIA模式下,待机功耗大约在12到15瓦;切到集成显卡之后,待机功耗能压到5到7瓦。这个差距在长时间使用中是非常可观的。
为什么这个切换是安全的
很多人担心关掉独显会有问题。其实Pop!_OS的这个切换过程是完整的,它不只是禁用GPU,还会在驱动层面把相关服务停掉。你的显示器输出、桌面合成、视频播放都会自动走集成显卡的通路,不会有任何显示问题。
而且,你也可以手动切换,不用每次重启。只要你当前不需要重负载GPU,就保持在集成模式,等要跑CUDA或者游戏的时候再切回去。
TLP:Linux电源管理的核心工具
TLP是Linux上最知名的电源管理工具之一。它在Ubuntu和Pop!_OS上都能用,而且配置相对简单。
安装TLP
sudo apt install tlp tlp-rdw
安装完之后,TLP默认就会在开机时自动启动。你不需要做太多配置,开箱即用。
检查TLP状态
sudo tlp-stat -s
sudo tlp-stat -b
第一条命令看整体电源管理状态,第二条看电池的健康状况和充电策略。
你会看到类似这样的输出:
+++ System Status
Power supply: device mainsAdapter online=1
Battery: device BAT0
charge: 58.4 Wh (43.1%) of charge 135.4 Wh
status: discharging
capacity: 98.2 %
+++ TLP Service State
service: enabled active
这个界面虽然看起来有点干,但它告诉了你最重要的信息:当前是在用交流电还是电池,电池还剩多少,TLP是否在正常工作。
TLP的配置文件
TLP的核心配置文件在 /etc/tlp.conf。默认的配置文件其实已经比较合理了,但你可以针对自己的使用场景做一些调整。
如果你想知道有哪些可配置项,可以用这个命令:
sudo tlp stat
它会把当前所有生效的配置打印出来,你可以根据实际硬件来微调。
一个比较关键的配置是磁盘节能策略:
DISK_IDLE_SECS_ON_AC=0
DISK_IDLE_SECS_ON_BAT=0
DISK_APM=254
DISK_APM=254 是让磁盘进入最节能的模式,也就是尽量让磁头少动。对于固态硬盘(SSD)来说,这个值没有意义,因为SSD没有机械结构。所以如果你用的是SSD,可以忽略这项。
另一个重要的配置是USB自动挂起:
USB_AUTOSUSPEND=1
这个功能会让没有活动的USB设备自动进入低功耗状态。如果你的鼠标、键盘、外接硬盘都在用,这个功能可能会影响响应速度,这时候可以设为0。
为什么TLP比手动配置好
之前很多人(包括我自己)会手动写一些脚本去设置CPU频率、磁盘参数、PCIe节能等。但这些手动脚本有几个问题:它们之间可能有冲突,系统更新之后可能失效,而且不同硬件需要不同的配置。
TLP把所有这些逻辑都封装好了,它会根据你的硬件自动选择最优策略。你不需要知道每个参数的具体含义,只需要知道它存在,并且会帮你管好。
CPU调速器:省电的底层机制
CPU调速器决定了你的处理器在不同场景下怎么运行。这是省电最底层也最有效的控制点之一。
在Linux中,常见的调速器有几种:
- performance:CPU始终跑在最高频率,响应最快,但最耗电
- powersave:CPU尽可能用低频率,省电,但响应可能慢一点
- ondemand:根据负载动态调整,负载高就升频,负载低就降频
- conservative:和ondemand类似,但升降频更平滑
查看当前调速器
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
你也可以一次性看所有核心:
cpufreq-info -g
在Pop!_OS中,TLP会帮你自动管理这个设置。但你如果想手动确认或者调整,也可以直接用命令:
sudo cpupower frequency-set -g powersave
或者更精确地指定频率范围:
sudo cpupower frequency-set -g powersave -f 800MHz 2400MHz
这个命令的意思是把CPU调速器设为powersave,并且频率限制在800MHz到2400MHz之间。
为什么频率限制能省电
CPU的功耗和频率基本是线性关系的。频率越高,电压也要相应提高,功耗就越大。把最高频率从3.0GHz降到2.4GHz,看起来只是降了20%,但实际功耗的降低可能达到30%到40%。
对于日常使用来说,2.4GHz已经非常够了。浏览网页、写文档、看视频、写代码,这些场景根本用不到满频。只有在编译大型项目或者跑视频渲染的时候,你才需要更高频率。
用auto-cpudyn做智能调度
如果你不想手动管理,可以尝试 auto-cpudyn,它是一个比TLP更细粒度的CPU调度工具:
sudo apt install auto-cpudyn
它会根据当前负载自动在powersave和performance之间切换,比ondemand的算法更智能。
禁用不必要的后台服务
很多耗电来自于后台服务。这些服务在你的笔记本待机的时候也在跑,悄悄吃掉电量。
可以用这个命令查看哪些服务在跑:
systemctl list-units --type=service --state=running
这里列出的都是当前运行中的服务。你可以挑一些不用的关掉。
几个常见的可以安全的禁用的服务:
# 蓝牙如果没有在用
sudo systemctl disable --now bluetooth
# 打印服务如果不用
sudo systemctl disable --now cups
# Modem如果不用
sudo systemctl disable --now ModemManager
# 如果不用AirPlay接收
sudo systemctl disable --now avahi-daemon
要注意的是,不要盲目禁用服务。如果你在用蓝牙鼠标,那蓝牙服务就不能关;如果你要用打印机,cups也得留着。每个服务关掉之前,先想想自己有没有在用相关的功能。
我之前的做法是,把暂时不用的服务先disable掉,等需要的时候再enable回来。这样既不会影响现在的体验,也不会让以后想用的时候找不到。
显示器和屏幕的优化
显示器是笔记本耗电的大头之一。屏幕亮度每调高一档,功耗就会显著增加。
降低屏幕亮度
这个不用多解释,但你可以通过命令来设置:
# 查看当前亮度
cat /sys/class/backlight/*/brightness
# 设置亮度(根据实际路径调整)
echo 300 | sudo tee /sys/class/backlight/*/brightness
一般建议把亮度控制在30%到40%左右。在室内环境下,这个亮度已经足够清晰,而且功耗会低很多。
启用显示器自动锁屏
锁屏不只是安全功能,也能省电。你可以在设置里找到”屏幕保护”选项,把”自动锁定”打开,设置一个合理的时间,比如5到10分钟无操作后锁屏。
Wayland vs X11
Pop!_OS默认使用Wayland。Wayland相比X11在某些场景下功耗更低,主要是因为它在显示合成方面更高效。如果你在用NVIDIA显卡并且已经切到集成模式,Wayland的渲染效率会更好。
不过,如果你遇到某些应用兼容性问题,可以切换到X11。切换方式是在登录界面点击右下角的齿轮图标,选择”Pop on X11”。
网络模块的节能设置
无线网卡也是耗电的来源之一,尤其是当你在移动中信号不太好的时候,网卡会提高功率来维持连接。
开启网卡自动节能
对于Intel的无线网卡,可以用以下命令:
# 查看当前状态
iwconfig wlan0 | grep Power
# 开启节能
sudo iwconfig wlan0 power on
对于更通用的方法,TLP已经帮你处理了大部分无线网卡的节能设置。你可以在 /etc/tlp.conf 中确认:
# 无线节能
WL_POWER_SAVE=1
默认是开启的。如果你发现蓝牙或者WiFi有时候响应变慢,可以把这个值改成0。
禁用IPv6
如果你的网络环境不支持IPv6,或者你根本用不到IPv6,关掉它可能能减少一些后台的网络栈开销。
在Pop!_OS中,可以在网络设置里禁用IPv6,或者通过sysctl临时关闭:
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
要永久生效,可以编辑 /etc/sysctl.conf,加上这两行:
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
浏览器是耗电大户,你需要知道的事
浏览器可能是你日常使用中耗电最多的单应用程序了。Chrome、Firefox、Edge这些浏览器在处理视频、动画、复杂的网页时,CPU和GPU的负载会直线上升。
Firefox的节能优化
Firefox在Linux上其实挺省电的,但有几个设置可以帮你进一步降低功耗:
减少标签页数量:每个标签页都是一个独立的进程,标签越多,内存和CPU占用越多。我的建议是,关掉不用的标签,或者用Firefox自带的”内存节省模式”(设置里可以打开)
禁用硬件加速:如果你已经切到了集成显卡模式,硬件加速可能反而会增加功耗。可以在
about:config中搜索layers.acceleration.disabled,设为true使用uBlock Origin等广告拦截器:网页上的广告和追踪脚本会消耗大量资源,拦截它们能显著降低CPU负载
Chrome的优化
Chrome的问题在于它默认的进程模型比较激进。每个标签页、每个扩展都是一个独立进程。你可以:
- 安装”The Great Suspender”或者类似扩展,自动挂起不用的标签页
- 在
chrome://settings/performance中开启内存节省模式 - 尽量少开标签页,一个窗口开三五个就够了,不要五十个
换用更轻量的浏览器
如果你对性能要求不高,可以考虑用更轻量的浏览器,比如Brave(基于Chromium但默认拦截更多追踪)或者Firefox的轻量配置。
文件系统挂载选项的优化
Linux的文件系统默认有一些不太适合笔记本的挂载选项,调整它们可以减少磁盘活动,从而省电。
启用noatime
默认的Linux文件系统会在每次读取文件时更新访问时间戳(atime),这个操作是纯浪费的。你可以改成只在文件修改时才更新:
编辑 /etc/fstab,在挂载选项中加入 noatime:
/dev/nvme0n1p2 / ext4 errors=remount-ro,noatime 0 1
改完之后重新挂载:
sudo mount -o remount /
启用discard(仅SSD)
如果你用的是SSD,可以在挂载选项中加入discard,让文件系统自动做TRIM:
/dev/nvme0n1p2 / ext4 errors=remount-ro,noatime,discard 0 1
不过要注意,频繁discard可能对某些SSD的寿命有影响。更安全的做法是每周运行一次fstrim:
sudo fstrim -v /
实际测试方法:如何验证省电效果
做了这么多优化,你得知道到底有没有用。光看数字是不够的,得用实际的使用场景来测试。
建立基准测试
首先,你需要建立一个基准。在不做任何优化的情况下,用同样的使用模式测试续航时间:
- 把屏幕亮度调到固定的值(比如30%)
- 打开固定的几个应用(浏览器、代码编辑器、音乐播放器)
- 关掉所有不必要的后台程序
- 用同样的网页浏览、代码编写、视频播放的混合使用模式
- 记录从100%到0%用了多长时间
做优化的对比测试
优化完之后,用同样的使用模式再测一次。这样得到的数据才有可比性。
用powertop做实时功耗分析
powertop是Linux自带的功耗分析工具,可以实时显示各个硬件组件的功耗:
sudo powertop
在top模式下,你可以看到哪些设备耗电最多。按Tab键可以切换到”调优”模式,它会给出一些自动优化的建议。
注意,powertop的建议不一定都适合你的场景。比如它可能会建议你把某些USB设备挂起,但这可能导致你的外设响应变慢。建议先一个个尝试,看看实际效果再决定。
一些容易被忽略的小细节
除了上面说的大方向,还有一些小细节也会悄悄吃掉你的电量:
键盘背光:如果你的笔记本有键盘背光,关掉它能省下不少电。尤其是晚上用不着的时候。
键盘背光可以通过命令控制:
# 查看当前状态
cat /sys/class/leds/*kbd_backlight/brightness
# 关闭
echo 0 | sudo tee /sys/class/leds/*kbd_backlight/brightness
关闭不用的端口:如果你不用雷电接口、HDMI输出等,这些端口的控制器也会耗电。不过这一般需要进BIOS才能关,不是所有笔记本都支持。
睡眠而不是休眠:对于现代Linux笔记本来说,睡眠(suspend)的功耗已经很低了,而且恢复速度更快。休眠(hibernate)虽然完全关机,但恢复时需要把内存数据写回磁盘再读回来,速度较慢。除非你要离开很久,否则用睡眠就够了。
总结:一套完整的省电流程
我把上面的内容整理成一个你可以跟着做的流程:
第一步:确认硬件 跑一遍开头的命令,搞清楚自己的CPU、显卡、磁盘类型。
第二步:切换显卡模式 如果是NVIDIA独显,切到集成显卡模式。这是影响最大的一步。
第三步:安装TLP TLP帮你管了大部分基础电源管理,开箱即用。
第四步:检查CPU调速器 确认调速器是ondemand或者powersave。
第五步:禁用不需要的服务 蓝牙、打印、Modem这些,根据自己使用情况来决定。
第六步:优化浏览器 关掉多余的标签,用广告拦截器,考虑换用更轻量的浏览器。
第七步:调整显示器设置 降低亮度,启用自动锁屏。
第八步:做对比测试 用同样的使用模式,比较优化前后的续航时间。
我的测试结果是从3小时到7小时,这个提升幅度可能因人而异,但大方向是没错的。你根据自己的硬件情况,一步一步来,基本都能有比较明显的改善。
最重要的是,不要指望一步到位。电源管理是一个持续调整的过程,你要根据自己的使用习惯找到最合适的平衡点。省电的同时也不能让电脑慢到没法用,这个度需要你自己去体会。
希望这些经验能帮到你。如果你在实际操作过程中遇到了什么问题,欢迎在下面留言交流。Linux社区的可爱之处就在于,每个人分享的经验都能帮到更多人。