电源报告
- script\studyreport\20260116_085314_BatteryReport.html
- 太宏观,只能看个电量曲线,看不到是谁耗电。
- script\studyreport\20260116_085314_SystemPowerReport.html
- 分析 Windows 睡眠/待机问题最权威、最核心的“黑匣子”
- 看死因 :Thermal (热)、Budget (电量耗尽)、Abnormal (崩了)。
- 看凶手 :Top Offenders (Fx Device 驱动、Activator 软件)。
- 看模式 :是不是每次都在 55分钟 准时死(这直接指向固件/阈值问题)。
- script\studyreport\20260116_085314_SystemSleepDiagnostics.html
- 太底层,全是寄存器和状态机代码,给内核开发人员看的。
- Event Viewer
- 只能告诉你“什么时候死了”(6008),但永远不会告诉你“为什么死”(比如是谁阻止了睡眠)。
trae解析脚本
script\studyreport\analyze_sleepstudy.py
trae解析关键信息
(miniconda3)PS D:\codeTrae\TraeProject\windows_power_manager> C:/Users/cat/miniconda3/Scripts/activate
(miniconda3)PS D:\codeTrae\TraeProject\windows_power_manager> conda activate winpm314
(winpm314)PS D:\codeTrae\TraeProject\windows_power_manager> & D:/codePython/python/anaconda3/winpm314/python.exe d:/codeTrae/TraeProject/windows_power_manager/script/studyreport/analyze_sleepstudy.py
Analyzing (Brute Force Mode): 20260116_085314_SystemPowerReport.html
=== 1. Failure Patterns Confirmed ===
[YES] Duration '0:55:41' found (Thermal Trip signature)
[YES] Energy '3,834 mWh' found (Battery Budget signature)
[YES] 'Abnormal Shutdown' found
=== 2. Global Hardware/Driver Extraction ===
[!] No 'Fx Device:' patterns found. Trying 'Activator:'...
=== 3. Suspicious Device Name Scraper ===
Hardware devices found in tables (Frequency):
[12] AMD Radeon 780M Graphics (\_SB.PCI0.GP17.VGA)
[7] PCI Express 根端口 (\_SB.PCI0.GPP8)
[5] PCI Express 根端口 (\_SB.PCI0.GPP1)
[3] \Device\HarddiskVolume2\Windows\System32\WUDFHost.
[3] Microsoft.Windows.ShellExperienceHost_10.0.19041.5
[2] \Device\HarddiskVolume2\Windows\System32\svchost.e
[1] Microsoft.Windows.StartMenuExperienceHost_10.0.190
[1] \Device\HarddiskVolume2\Windows\System32\SearchPro
(winpm314)PS D:\codeTrae\TraeProject\windows_power_manager> Trae对睡眠自动关机的分析
我们终于抓到了!
请看这几个数字:
- [12] AMD Radeon 780M Graphics (_SB.PCI0.GP17.VGA)
- [7] PCI Express 根端口 (_SB.PCI0.GPP8)
- [5] PCI Express 根端口 (_SB.PCI0.GPP1) 这三个设备在你的电源报告里反复出现,且频率极高(12次、7次、5次)。它们就是导致系统无法进入低功耗状态(D3/D-State),最终导致 4W 高功耗并触发热关机的真凶。
罪证分析
- AMD Radeon 780M Graphics : 显卡。如果它在待机时一直醒着(D0),或者频繁唤醒,SoC 就永远无法进入深睡。
- PCI Express 根端口 (_SB.PCI0.GPP1) : 这个端口通常挂载着 NVMe SSD 。
- PCI Express 根端口 (_SB.PCI0.GPP8) : 这个端口通常挂载着 无线网卡 (Wi-Fi) 或者其他高带宽设备。
场景还原
- 你合盖,系统尝试进入 Modern Standby。
- 显卡驱动 (AMD 780M) 或者 GPP1 上的设备 (NVMe) 拒绝进入 D3 状态,或者进入后立刻被唤醒。
- 系统被迫保持在“假死”状态:屏幕关了,但 PCIe 总线全速运转,CPU 被迫维持 C0/C1 状态来处理 PCIe 中断。
- 整机功耗飙升到 4W+ 。
- 持续 55分41秒 后,累计耗电达到 3834 mWh (这可能是电池管理的硬阈值,比如“待机最多允许消耗 5% 电量”)。
- 系统判定“待机严重异常”,触发 自适应保护 ,强制断电关机(Thermal/Budget Trip)。
- 待机预算 (Standby Budget Percent) 是直接触发关机的“扳机”,但 4W 功耗是扣动扳机的“手指”。
“风扇一直转” 这个现象是绝对的铁证。
- 正常的 Modern Standby (S0ix) 状态下,CPU 会进入极低功耗状态(C10),整机功耗 <1W,风扇是绝对 不应该转 的,甚至应该完全停转。
- 如果风扇在转,说明 CPU 还在干活,甚至可能处于 C0(全速)状态,只是屏幕关了而已。这就是所谓的 “假死” 或 “失眠 (Insomnia)” 。
- 你的两个方向:
- 1. 提高待机预算 (StandbyBudgetPercent -> 100%) :
- 后果 :风扇会在背包里转几个小时,直到电池耗尽或者热保护关机。
- 评价 :这是 下策 。你虽然避免了“55分钟自动关机”,但换来的是“发烫的背包”和“拿出来就没电的电脑”。这不仅伤电池,还有安全隐患。 - 2. 降低待机功耗 (解决风扇转的问题) :
- 目标 :让 CPU 真正睡着,风扇停转,功耗降到 0.5W 以下。
- 后果 :
- 5% 的预算可以撑 10+ 小时。
- 背包里是凉的。
- 拿出来电量几乎没掉。
- 评价 :这是 上策 ,也是唯一正确的解法。
- 1. 提高待机预算 (StandbyBudgetPercent -> 100%) :
解决方案:针对性打击
既然知道是 AMD 显卡和 PCIe 端口(硬盘/网卡)的问题,我们就不再调 powercfg 了,而是去 设备管理器 和 驱动层 解决。
- 禁用 AMD 显卡的“唤醒”权限(如果可选)
- 这很难,因为显卡通常没有“允许此设备唤醒计算机”的选项。但可以尝试更新或 回退 显卡驱动。你说过“重装 AMD 驱动后好了一阵子,然后又不行了”,这说明 Windows Update 可能偷偷给你推了一个有 bug 的 AMD 驱动 。
- 建议 :去 AMD 官网下载最新的 Adrenalin 驱动(或者 OEM 提供的旧版稳定驱动),断网安装,并禁止 Windows 自动更新显卡驱动。
- 处理 PCIe GPP1 (NVMe)
- NVMe 硬盘 是 Modern Standby 的头号杀手。
- 操作 :在“电源选项 -> 更改计划设置 -> 更改高级电源设置”里:
- PCI Express -> 链接状态电源管理 :
- 电池: 最大电源节省量 (Maximum power savings) 。(你之前说是“关闭”,这可能是导致它不进 D3 的原因!)
- 接电:最大电源节省量(或中等)。
- 重要 :一定要设为 Maximum power savings ,否则 PCIe 链路可能一直保持 L0 激活状态,导致 SoC 无法深睡。
- 处理 PCIe GPP8 (可能是网卡)
- 去设备管理器,找到 无线网卡 (MediaTek / Intel / Realtek)。
- 右键 -> 属性 -> 电源管理 。
- 取消勾选 “允许此设备唤醒计算机”(如果你的需求允许)。
- 勾选 “允许计算机关闭此设备以节约电源”。
总结建议
你的问题 100% 是硬件驱动(显卡 + PCIe设备)在 Modern Standby 下无法正确进入 D3cold 导致的 。
请立即执行以下操作:
电源选项 :把 PCI Express 链接状态电源管理 (电池模式)改为 “最大电源节省量” 。这是最可能直接解决 GPP1/GPP8 问题的开关。
AMD 驱动 :检查是否有驱动更新,或者回退到一个你记得“曾经正常”的版本。
再测一晚 :做完这两步,再合盖睡一晚。如果第二天早上没有 6008,那就成了。