折腾Windows睡眠功能实录 写好了

This commit is contained in:
NIUZHAOLONG 2025-02-01 20:11:17 +08:00
parent 7d7506eaa6
commit 63302cda25
5 changed files with 30 additions and 18 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 645 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

View File

@ -1,7 +1,7 @@
+++
date = '2025-01-29T23:52:32+08:00'
languageCode = 'zh-cn'
draft = true
draft = false
title = '折腾Windows睡眠功能实录'
+++
@ -28,17 +28,10 @@ title = '折腾Windows睡眠功能实录'
体验 Windows 功能体验包 1000.26100.36.0
```
### 问题描述
1. 进入睡眠以后掉电很快没多久就因为耗电过多4%触发休眠门槛导致系统休眠hibernate到硬盘。键盘灯亮电源灯不呼吸但是大小写锁定灯和FN锁定灯熄灭
1. 在连接电源睡眠,可能会卡死,出现无规律。卡死时键盘灯亮、电源灯不呼吸、电脑严重发热、但是风扇不转。无论按什么按钮(包括电源键)电脑均无反应,只能长按电源键断电。
## 现代待机
[现代待机](https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/modern-standby)是微软在Windows上退出的*新*的待机机制实际上Windows已经使用了该机制10年以上也算是经过了一些检验。这里从微软的文档中摘录一些内容用以科普几个概念。
进入睡眠以后掉电很快没多久就因为耗电过多4%触发休眠门槛导致系统休眠hibernate到硬盘。睡眠时键盘灯亮电源灯不呼吸但是大小写锁定灯和FN锁定灯熄灭。
## 测试方案
### 问题一、睡眠键盘灯不熄灭,耗电高
`win + x``a`打开管理员终端,输入 `powercfg /systempowerreport` 生成系统的电池报告,电池报告会生成在`%HOME%`目录下
![SW0%的电池报告](img/pic1.png)
@ -63,22 +56,41 @@ title = '折腾Windows睡眠功能实录'
Get-PnpDevice | Select-Object -Property FriendlyName, InstanceId | Out-GridView
```
![Out-GridView](img/pic5.png)
在弹出的窗口中搜索对应的设备位置,搜索即可找到对应的设备在设备管理器中的名字,在设备管理器中找到设备,尝试选择自动更新驱动程序。
在我的案例中我发现是AMD的USB控制器和其下的USB集线器过于活跃这些设备的驱动可能本身不含现代待机使用的*Low Power State* API,我额外检查了对应设备的电源管理设置,发现*允许计算机关闭此设备以节约电源*选项未勾选。我推测可能是因为系统无法以直接关闭设备的方式停止该设备活动,所以该设备活跃时间畸高。因此,勾选该项再次测试,发现系统可以正常进入睡眠,键盘灯正常熄灭。
在我的案例中我发现是AMD的USB控制器和其下的USB集线器过于活跃这些设备的驱动可能本身不含现代待机要求的[*low-power idle states*](https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/directed-power-management),我额外检查了对应设备的电源管理设置,发现*允许计算机关闭此设备以节约电源*选项未勾选。我推测可能是因为系统无法以直接关闭设备的方式停止该设备活动,所以该设备活跃时间畸高。因此,勾选该项再次测试,发现系统可以正常进入睡眠,键盘灯正常熄灭。
除此之外,我还更新了我的外设的驱动(雷蛇鼠标),现在的外设功能不断丰富,我推测个别外设可能需要专门的驱动实现现代待机使用的*Low Power State* API因此检查一下这些驱动也可能有帮助。
![电源管理设置](img/pic6.png)
之后,睡眠期间键盘灯不关闭、耗电高的问题成功解决
此外,在后期的测试过程中,还会出现个别程序长时间占用音频流(但不发出声音,因此难以察觉,可以使用`powercfg /requests`查看是否存在这种情况)导致的“高功耗”睡眠的情况,在系统电源报告中也有体现,可以直接寻找红色的电源记录检查是否存在问题
### 问题二、睡眠期间卡死
之后,睡眠期间耗电高的问题**成功解决**。
这个问题是该电脑长期存在的问题,重装系统也是出于该原因。检查电池报告,发现在睡眠卡死强制关机留下*Abnormal Shutdown*日志项,该日志项是在长按电源关机之后的下一次启动时生成的,内容应该来自系统从硬盘中页面文件中恢复的日志,一定程度上能反映卡死之前发生了什么。从所有的*Abnormal Shudown*日志发现,电脑在这是从未进入睡眠状态,而是在*Screen Off*后转入睡眠之前的某个时刻卡死。而在*Abnormal Shutdown*日志项中,均发现了*SystemSleepTransitionsToOn*项值畸高的情况。微软的文档并未有该项含义的详细解释,但是从项目词义可以推测系统反复尝试电源状态转换,推测可能是固件、硬件驱动或者硬件本身导致的问题。
如果上述方案仍难以解决问题,可以考虑使用[Windows性能分析器](https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/using-windows-performance-analyzer-to-analyze-modern-standby-issues#capture-and-view-a-wpa-trace-for-modern-standby-diagnostics)进一步确定问题。
2024年2月有[帖子](https://www.saraba1st.com/2b/thread-2170734-1-1.html)讲AMD发布了6800H更新的驱动解决了卡死的问题但是帖子的回复中答复给出消极信息。此后AMD驱动可能还有后续更新。此外联想在2024年12月还发布了笔记本的[BIOS更新](https://support.lenovo.com/bd/en/downloads/ds557402-bios-update-for-windows-11-64-bit-thinkbook-14-g4-ara-thinkbook-16-g4-ara),更新文档中有一条值得注意。
## 现代待机
> 4.Update Rembrandt PI to 1.0.0.Ba
[现代待机](https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/modern-standby)是微软在Windows上退出的*新*的待机机制实际上Windows已经使用了该机制10年以上也算是经过了一些检验。根据微软的[描述](https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/modern-standby-vs-s3)相比传统s3待机现代待机有以下几个优势
抱着尝试的心态,我更新了[AMD的芯片组驱动](https://www.amd.com/zh-cn/support/download/drivers.html)和联想的BIOS但是卡死并未好转。
- 迅速恢复可以在1s内恢复工作
- 睡眠期间保持后台活动
- 无需与bios互动仅需简单的硬件中断即可实现睡眠
经过进一步分析系统电源报告,我发现系统会在**睡眠期间充电至100%后卡死**
Windows在使用电源和电池时的现代待机策略时不同的以下两图反映了计算机在插入交流电源上图和使用电池下图时的系统被从DRIPS状态中唤醒时间间隔的不同。
![](img/pic8.png)
![](img/pic7.png)
我选择了比较典型的情况在上述对比中使用交流电源时DRIPS状态的中断更加频繁大部分DRIPS状态的持续时段在8-16s之间而使用电池时DRIPS状态的持续时段大多数在16mins以上。根据我的经验当在睡眠期间移除和接入交流电源会使电脑短暂唤醒然后重新进入睡眠状态。Windows可能在这期间调整电源使用策略。
Windows在处理因超时进入睡眠和因用户操作如电源按钮、关闭笔记本盖子等进入睡眠的策略也是不同的。如果系统达到设定的空闲时间系统会先关闭屏幕再在设定的超时达到后进入睡眠。 **(如果有音频占用,系统保持关闭屏幕状态,不会进入睡眠,直到因用户操作进入睡眠)** 如果用户做出进入睡眠的操作Windows会暂停音频流关闭屏幕的同时进入睡眠。
## 参考文献
- [What is Modern Standby](https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/modern-standby)
- [Modern Standby vs S3](https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/modern-standby-vs-s3)
- [Directed power management](https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/directed-power-management)
- [Modern Standby Basic Test Scenarios](https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/modern-standby-basic-test-scenarios)
- [Modern Standby FAQs](https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/modern-standby-faqs?source=recommendations)