【记录】Ubuntu|Ubuntu 26.04 笔记本耗电过快,排查 省电过程
Ubuntu 26.04 笔记本功耗排查记录设备ThinkPad X1 Extreme Gen 5i7-12700H RTX 3060系统Ubuntu 26.04日期2026-05-31耗电情况1小时电量告罄。文章目录Ubuntu 26.04 笔记本功耗排查记录一、起因二、测量过程第一步尝试 Powertop第二步尝试 NVIDIA 驱动第三步尝试 RAPLIntel 内置功耗测量第四步写采样脚本三、关闭 NVIDIA 独显关键步骤问题独显一直在耗电解决方法一切换到纯集显模式推荐解决方法二Runtime PM 自动休眠不重启实际效果四、测量结果重启前系统运行一段时间空闲状态重启后刚开机系统服务启动中为什么重启后反而更高五、结论34W 正常吗Powertop 的占比有什么用六、以后怎么快速查看功耗七、过程中遇到的问题问题 1Powertop 只给占比不给瓦数问题 2重启后 NVIDIA 驱动没加载问题 3RAPL 能量值溢出一、起因想看看系统里什么东西在耗电方便优化。之前跑了 Powertop它给了一个报告里面有占比%比如进程占比intel_atomic_commit_work40.2%Firefox10.0%i915_gem_free_work8.0%但问题是占比不等于功耗。40% 是什么意思是 4W 还是 40W看不出来。所以决定用其他方法获取真实瓦数。二、测量过程第一步尝试 Powertopsudopowertop--time5结果只给占比不给瓦数。放弃。第二步尝试 NVIDIA 驱动nvidia-smi --query-gpupower.draw--formatcsv结果9.43 W独显基本空闲。这个能用。第三步尝试 RAPLIntel 内置功耗测量sudocat/sys/class/powercap/intel-rapl:0/energy_uj# CPU 整包结果只能读到累计能量微焦耳不是直接的瓦数。需要自己算两次读数相减 ÷ 时间间隔 功耗W第四步写采样脚本#!/bin/bashE0$(sudocat/sys/class/powercap/intel-rapl:0/energy_uj)E0c$(sudocat/sys/class/powercap/intel-rapl:0:0/energy_uj)E0u$(sudocat/sys/class/powercap/intel-rapl:0:1/energy_uj)E0g$(sudocat/sys/class/powercap/intel-rapl:1/energy_uj)T0$(date%s%N)sleep3E1$(sudocat/sys/class/powercap/intel-rapl:0/energy_uj)E1c$(sudocat/sys/class/powercap/intel-rapl:0:0/energy_uj)E1u$(sudocat/sys/class/powercap/intel-rapl:0:1/energy_uj)E1g$(sudocat/sys/class/powercap/intel-rapl:1/energy_uj)T1$(date%s%N)DT$(((T1-T0)/1000000))calc(){locald$(($2-$1))[$d-lt0]d$((d268435456000))echoscale1;$d/$DT/ 1000|bc}echoCPU 总包:$(calc $E0 $E1)WechoCPU 核心:$(calc $E0c $E1c)WechoCPU 集显:$(calc $E0u $E1u)Wecho独显/其他:$(calc $E0g $E1g)W三、关闭 NVIDIA 独显关键步骤问题独显一直在耗电重启前测量发现即使没有运行 3D 程序NVIDIA RTX 3060 也在耗电~9W。解决方法一切换到纯集显模式推荐第一步切换到 Intel 集显sudoprime-select intel第二步停止并禁用 nvidia 持久化守护进程sudosystemctl stop nvidia-persistencedsudosystemctl disable nvidia-persistenced第三步重启生效sudoreboot验证prime-select query# 应该输出: intelnvidia-smi# 应该报错找不到 GPU 关成功了解决方法二Runtime PM 自动休眠不重启如果不想重启可以让系统自动管理独显电源查看独显状态cat/sys/bus/pci/devices/0000:01:00.0/power/runtime_status# suspended 已休眠 ✓# active 没休眠要处理cat/sys/bus/pci/devices/0000:01:00.0/power/control# auto 自动管理 ✓# on 一直开着要改成 auto手动切换为 auto 模式echoauto|sudotee/sys/bus/pci/devices/0000:01:00.0/power/controlTLP 已配置自动管理grepRUNTIME_PM /etc/tlp.conf# RUNTIME_PM_ON_ACauto# RUNTIME_PM_ON_BATauto实际效果方法一prime-select重启后独显完全关闭节省约 9W 功耗方法二Runtime PM独显空闲时自动休眠节省约 9W 功耗四、测量结果重启前系统运行一段时间空闲状态组件功耗CPU 整包~10 WNVIDIA RTX 3060~9 W合计~20 W重启后刚开机系统服务启动中组件功耗CPU 核心8.7 WIntel 集显25.4 WNVIDIA RTX 3060已休眠不耗电合计~34 W为什么重启后反而更高刚重启时系统服务还在启动load average: 1.63CPU 和集显都在干活。等几分钟系统稳定后功耗会降下来。五、结论34W 正常吗正常。对比一下设备CPUGPU 功耗MacBook Air M2 待机2-3WIntel N100 小主机5-8W你的 i7-12700H~34W游戏本满载80-150Wi7-12700H 有 14 核 20 线程光集显驱动屏幕就要 ~25W。这个配置天生比低功耗设备高不是坏了。Powertop 的占比有什么用占比能告诉你哪个组件相对最耗电但不能告诉你绝对功耗是多少。比如 Powertop 说 GPU 占 40%你不知道是 4W 还是 40W。用 RAPL 才能知道真实数字。六、以后怎么快速查看功耗# 方法一看累计能量微焦耳自己算sudocat/sys/class/powercap/intel-rapl:0/energy_uj# 方法二看温度间接判断sensors# 方法三看 NVIDIA 独显功耗如果有nvidia-smi --query-gpupower.draw--formatcsv# 方法四看系统负载判断是否在忙uptime如果想知道具体瓦数用上面的 RAPL 脚本跑一下就行。七、过程中遇到的问题问题 1Powertop 只给占比不给瓦数解决用 RAPL 接口读取累计能量自己算功耗。问题 2重启后 NVIDIA 驱动没加载nvidia-smi# 报错couldnt communicate with the NVIDIA driver原因刚重启时驱动还没加载完或者系统用了 nouveau 驱动。解决等一会儿或者检查驱动lsmod|grepnvidiacat/proc/driver/nvidia/version问题 3RAPL 能量值溢出energy_uj 最大约 268435456000268kJ超过会归零。解决脚本里加了溢出处理locald$(($2-$1))[$d-lt0]d$((d268435456000))本账号所有文章均为原创欢迎转载请注明文章出处https://shandianchengzi.blog.csdn.net/article/details/161573293。百度和各类采集站皆不可信搜索请谨慎鉴别。技术类文章一般都有时效性本人习惯不定期对自己的博文进行修正和更新因此请访问出处以查看本文的最新版本。