其实我使用的是 EndeavourOS,和 Arch Linux 基本一样,只是比 Arch Linux 要容易安装得多。安装后一直在用电源供电,没什么感觉。昨天晚上使用了一会电池供电,发现耗电很快,和 Ubuntu 相比续航明显更短。于是,我让 Hermes 给进行了诊断;经过诊断发现电源管理基本是"裸奔"状态。
诊断结果
| 项目 | 原始状态 | 问题 |
|---|
| 电源管理工具 | 只有 power-profiles-daemon | 太基础,功能有限 |
| WiFi 省电 | power_save = N(关闭) | WiFi 一直全功率运行 |
| PCIe ASPM | default(未优化) | 未启用省电模式 |
| CPU EPP | balance_performance | 偏性能,可以更省电 |
| PostgreSQL | 开机自启,一直运行 | 数据库服务很吃资源 |
优化步骤
1. 安装并启用 TLP(核心)
TLP 是 Linux 最全面的电源管理工具,自动管理 CPU、磁盘、USB、PCIe 等。
1
2
| sudo pacman -S tlp tlp-rdw
sudo systemctl enable --now tlp
|
2. 禁用 power-profiles-daemon
power-profiles-daemon 是 GNOME 的轻量级电源管理,功能简单且和 TLP 冲突。
1
2
| sudo systemctl disable --now power-profiles-daemon
sudo systemctl mask power-profiles-daemon # 防止被其他服务拉起
|
3. 开启 WiFi 省电
1
2
3
4
5
| # 持久化配置
echo 'options iwlwifi power_save=1' | sudo tee /etc/modprobe.d/iwlwifi.conf
# 立即生效
sudo iw dev wlan0 set power_save on
|
4. 设置 PCIe ASPM
PCIe Active State Power Management 可以让 PCIe 设备在空闲时进入低功耗状态。
1
2
3
4
5
6
7
| # 编辑 grub 配置,在 GRUB_CMDLINE_LINUX_DEFAULT 中加入 pcie_aspm=force
sudo vim /etc/default/grub
# 更新 grub
sudo grub-mkconfig -o /boot/grub/grub.cfg
# 重启生效
|
5. 安装 powertop 自动优化
powertop 可以分析系统功耗并自动调优。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| sudo pacman -S powertop
# 创建 systemd 服务实现开机自动优化
sudo tee /etc/systemd/system/powertop.service > /dev/null << 'EOF'
[Unit]
Description=Powertop tunings
After=multi-user.target
[Service]
Type=oneshot
ExecStart=/usr/bin/powertop --auto-tune
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable powertop.service
|
6. 禁用不必要的服务
1
2
3
4
5
6
| # 按需禁用高耗能服务
sudo systemctl disable --now postgresql.service
sudo systemctl disable --now cups.service
# 需要时手动启动
sudo systemctl start postgresql
|
验证方法
1
2
3
4
5
6
7
8
9
10
11
12
13
| # 查看 TLP 状态
sudo tlp-stat -s
# 实时功耗分析(需电池供电)
sudo powertop
# 检查各项配置
cat /sys/module/iwlwifi/parameters/power_save # 应为 Y
cat /sys/module/pcie_aspm/parameters/policy # 应包含 powersave
cat /sys/devices/system/cpu/cpu0/cpufreq/energy_performance_preference
# 查看电池放电速率(需电池供电)
sudo tlp-stat -b
|
优化效果
| 项目 | 状态 |
|---|
| TLP | ✅ 运行中 |
| WiFi 省电 | ✅ 已开启 |
| power-profiles-daemon | ✅ 已禁用 |
| PostgreSQL | ✅ 已禁用 |
| powertop | ✅ 运行中 |
| PCIe ASPM | ✅ 内核参数已加 |
预期续航提升:20-40%,接近 Ubuntu 默认水平。
意外收获:自动亮度解锁
禁用 power-profiles-daemon 后,发现 KDE 的自动亮度选项突然可用了。在之前的 Ubuntu 24.04 的时候,自动亮度是有的,后来升级系统之后,无论是哪个系统,自动亮度就不工作了。为了让自动亮度工作,我还用 AI 专门写了一个脚本来实现:linux下使用kde桌面,自动亮度失效解决办法
原因: 笔记本有环境光传感器(hid_sensor_als),但之前 power-profiles-daemon 和 iio-sensor-proxy(负责把传感器数据传给桌面)有冲突。禁用后 iio-sensor-proxy 正常工作,自动亮度功能解锁。
1
2
3
4
| # 查看传感器状态
cat /sys/bus/iio/devices/iio:device0/in_illuminance_raw
lsmod | grep hid_sensor_als
systemctl status iio-sensor-proxy
|
常用命令速查
| 用途 | 命令 |
|---|
| 查看 TLP 状态 | sudo tlp-stat -s |
| 实时功耗分析 | sudo powertop |
| 启动 PostgreSQL | sudo systemctl start postgresql |
| 临时关闭蓝牙 | sudo systemctl stop bluetooth |
| 查看电池信息 | sudo tlp-stat -b |
进一步优化建议
- 降低屏幕亮度 — 当前 65%,降到 40-50% 能省不少电
- 不用蓝牙时关掉 —
sudo systemctl stop bluetooth - 用 powertop 分析 — 找出最耗电的进程
- 调整 CPU EPP — 电池模式下可设为
balance_power 或 power
power-profiles-daemon 是什么
| 项目 | 说明 |
|---|
| 全称 | Power Profiles Daemon |
| 开发者 | GNOME / Red Hat |
| 目的 | 提供简单的电源模式切换(性能/平衡/省电) |
| 用户 | GNOME 默认电源管理后端 |
和 TLP 的区别:
| 特性 | power-profiles-daemon | TLP |
|---|
| 定位 | 简单的模式切换 | 全面的电源管理 |
| 功能 | 只管 CPU 调频 | CPU、磁盘、USB、WiFi、PCIe 全管 |
| 配置 | 几乎无可调 | 丰富的配置文件 |
| 自动化 | 需要用户手动切模式 | 自动根据 AC/电池切换 |
| 省电效果 | 一般 | 显著 |
参考
评论