背景#

机器:HP Pavilion Aero 13-be1xxx,AMD Ryzen 5 5625U (Zen 3, 6c12t),36 Wh 小电池,2560×1600 IPS 屏,Fedora 44 / kernel 7.0 / KDE Plasma。

拔电跑 Cursor agent 编码时整机功率 9-12W,想压低 idle 基线并提升续航。

硬件画像(先确认)#

# 电池容量与状态
cat /sys/class/power_supply/BAT0/uevent

# CPU / pstate / EPP / boost
cat /sys/devices/system/cpu/amd_pstate/status                    # active
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governor     # powersave
cat /sys/devices/system/cpu/cpufreq/policy0/energy_performance_preference

# 平台 profile(HP PMF / hp-wmi)
cat /sys/firmware/acpi/platform_profile_choices                  # cool quiet balanced performance

# Wi-Fi 省电
iw dev wlp1s0 get power_save

# 现有电源服务(不能同时跑 TLP 和 power-profiles-daemon)
systemctl is-active tlp power-profiles-daemon tuned

三项立刻能拿到的优化(实测有效)#

# 1. Wi-Fi 省电(MT7922 默认 off,开启省 ~0.3-0.5W)
sudo iw dev wlp1s0 set power_save on

# 2. EPP 拉到 power(idle 降 ~0.5-1W)
echo power | sudo tee /sys/devices/system/cpu/cpufreq/policy*/energy_performance_preference

# 3. 键盘背光关掉(如果有)
echo 0 | sudo tee /sys/class/leds/*kbd_backlight*/brightness 2>/dev/null

不要再去试 platform_profile=cool/quiet,本机 BIOS 拒收,见后文。

持久化:TLP 配置#

把上面这套写进 TLP,让 AC/BAT 自动切换。

/etc/tlp.d/00-aero.conf:

# HP Pavilion Aero 13-be1xxx / Ryzen 5 5625U
# 电池侧偏省电,AC 侧保留性能;插拔自动切换。

CPU_SCALING_GOVERNOR_ON_AC=powersave
CPU_SCALING_GOVERNOR_ON_BAT=powersave

CPU_ENERGY_PERF_POLICY_ON_AC=balance_performance
CPU_ENERGY_PERF_POLICY_ON_BAT=power

CPU_BOOST_ON_AC=1
CPU_BOOST_ON_BAT=1
CPU_HWP_DYN_BOOST_ON_AC=1
CPU_HWP_DYN_BOOST_ON_BAT=0

WIFI_PWR_ON_AC=off
WIFI_PWR_ON_BAT=on

PCIE_ASPM_ON_AC=default
PCIE_ASPM_ON_BAT=powersupersave

RUNTIME_PM_ON_AC=on
RUNTIME_PM_ON_BAT=auto

USB_AUTOSUSPEND=1
USB_EXCLUDE_AUDIO=1
USB_EXCLUDE_PRINTER=1

RADEON_DPM_PERF_LEVEL_ON_BAT=auto
RADEON_DPM_STATE_ON_BAT=battery

应用并启用:

sudo tlp start
sudo systemctl enable tlp.service
sudo systemctl enable tlp-pd.service          # 消除 tlp-stat 的 warning
sudo tlp-stat -p | head -40                   # 验证生效

设计取舍#

  • 保留 CPU_BOOST_ON_BAT=1:日常要跑 Cursor agent + ripgrep 索引,关 boost 会显著拖慢响应;靠 CPU_HWP_DYN_BOOST_ON_BAT=0 让 boost 不被无脑触发即可。
  • 没动 NVMe APST / SATA ALPM:5625U 平台默认就是省电策略,TLP 不干预反而稳。
  • 没设 PLATFORM_PROFILE_ON_BAT:理由见下一节。

platform_profile 坑:放弃,不是配置问题#

写入 cool / quiet / low-power 都被驱动拒收。dmesg 揭示真相:

hp-wmi: Failed to apply initial fan settings: -22
platform_profile: Failed to get profile for handler hp-wmi

-22 = -EINVAL:hp-wmi 在驱动初始化阶段调 WMI 想读取 PMF 状态就被 BIOS 拒了。本机 BIOS 是 AMI F.03,与 kernel 7.x 的 hp-wmi 接口对不上,是已知兼容性 bug。

副作用是 platform_profile sysfs 节点写入会立刻进入 stuck 态:

$ cat /sys/firmware/acpi/platform_profile
cat: 无效的参数

重启也不复位。两条解法不值得折腾:

  1. 升级 BIOS(HP 官网有更新版,Linux 走 fwupdmgr refresh && fwupdmgr update 看 LVFS 是否推了)
  2. 升级 kernel 到 7.1+(看 hp-wmi 是否修了)

少了这一档 PMF 限制,影响是峰值时 sustained TDP 仍按 15W 跑。但电池实测平均功耗已经够低,收益 < 1W,不值得。

直接从 TLP 配置里删掉 platform_profile 行避免日志报错:

sudo sed -i '/^PLATFORM_PROFILE/d' /etc/tlp.d/00-aero.conf

实测数据(拔电 1.5 小时 / Cursor agent 编码)#

数据源:/var/lib/upower/history-rate-*.dat + history-charge-*.dat。

指标值
拔电时长5636 秒 ≈ 1h 34min
电量消耗95% → 48% = 47%
实际放电36 Wh × 47% ≈ 16.9 Wh
平均整机功率≈ 10.8 W
推算满电续航≈ 3.3 小时

瞬时轨迹:

0   min   9.25 W    刚拔电,编辑器 idle
30  min  10.41 W    开始干活
60  min  11.56 W    Cursor agent + rg 全核
90  min  11.60 W    持续负载

idle baseline 已经被压到 9.25W,工作负载顶上去也只到 11.6W,没再出现 20W+ 的尖峰。

平均功率测量脚本(30s 采样平均)#

调优后验证用:

( for i in $(seq 1 30); do
    awk -F= '/CURRENT_NOW/{c=$2} /VOLTAGE_NOW/{v=$2} END{print v*c/1e12}' \
      /sys/class/power_supply/BAT0/uevent
    sleep 1
  done ) | awk '{s+=$1; n++} END{printf "平均 %.2f W (n=%d)\n", s/n, n}'

还能再降的方向(边际收益)#

按收益从高到低:

  1. 屏幕亮度:2560×1600 IPS 是单一最大负载,每降 20% 整机 ~ -0.5W。
  2. Cursor 关掉不用的 workspace:每个挂载的项目都跑 Codebase Indexing + file watcher。只留当前要改的项目。
  3. 关 Cursor 后台 Agent(左下 status bar),不用就关。
  4. NTFS 分区项目搬到 ext4:跨架构文件读写 CPU 占用高 1.5-3 倍。
  5. 看视频时:Firefox 强制硬解(media.av1.enabled=false,让 YouTube 回退到 VP9 走 VCN 硬解)。5625U 是 Vega APU,不支持 AV1 硬解,软解 AV1 比硬解 VP9 多 5-8W。

不要做#

  • pcie_aspm=force 内核参数:MT7922 + AMD 平台开太狠 Wi-Fi 会断流。
  • 关 SMT / 关核:Zen 3 race-to-idle 反而被破坏。
  • power_dpm_force_performance_level=low 把 GPU 死锁低频:滚动卡顿,省那 0.5W 不值。
  • 改 cpufreq 上限:amd_pstate active 模式下硬限频会绕过节能调度算法,反而费电。
  • 再去折腾 platform_profile:BIOS 接口 bug,等官方更新。

验证清单#

调完跑一遍:

echo "--- governor / EPP / boost ---"
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
cat /sys/devices/system/cpu/cpufreq/policy0/energy_performance_preference
cat /sys/devices/system/cpu/cpufreq/boost

echo "--- wifi ---"
iw dev wlp1s0 get power_save

echo "--- TLP 当前 profile ---"
sudo tlp-stat -s | grep -E "TLP profile|Power source"

echo "--- 整机瞬时功率 ---"
awk -F= '/CURRENT_NOW/{c=$2} /VOLTAGE_NOW/{v=$2} END{printf "P=%.2fW\n", v*c/1e12}' \
  /sys/class/power_supply/BAT0/uevent

预期值(电池模式):

  • governor: powersave
  • EPP: power
  • boost: 1
  • Wi-Fi: Power save: on
  • TLP profile: balanced/BAT 或 battery/BAT
  • 整机功率: idle ~ 7-9 W,工作 ~ 10-12 W

复盘#

  • 没花一分钱、没换硬件,平均功耗从估计的 12-13W(默认 Fedora)降到实测 10.8W,相当于续航多了 ~30%。
  • 大头来自三个开关:EPP=power、Wi-Fi PS、TLP 在 AC/BAT 间自动切策略。
  • AMD APU 上的 platform_profile 在 hp-wmi 这条路上不稳,能跑就跑、跑不了别死磕。
  • 真正的天花板是屏幕(2.5K IPS 满亮度 ~4-5W)和应用层(Cursor 多 workspace + Electron)。

最后更新: 2026-06-29 适用环境: HP Pavilion Aero 13-be1xxx (Ryzen 5 5625U) / Fedora 44 / kernel 7.0.13 / KDE Plasma / TLP 1.10.1