diff --git a/content/posts/折腾Windows睡眠功能实录/img/pic5.png b/content/posts/折腾Windows睡眠功能实录/img/pic5.png new file mode 100644 index 0000000..b1fe863 Binary files /dev/null and b/content/posts/折腾Windows睡眠功能实录/img/pic5.png differ diff --git a/content/posts/折腾Windows睡眠功能实录/img/pic6.png b/content/posts/折腾Windows睡眠功能实录/img/pic6.png new file mode 100644 index 0000000..a296282 Binary files /dev/null and b/content/posts/折腾Windows睡眠功能实录/img/pic6.png differ diff --git a/content/posts/折腾Windows睡眠功能实录/img/pic7.png b/content/posts/折腾Windows睡眠功能实录/img/pic7.png new file mode 100644 index 0000000..c97a847 Binary files /dev/null and b/content/posts/折腾Windows睡眠功能实录/img/pic7.png differ diff --git a/content/posts/折腾Windows睡眠功能实录/img/pic8.png b/content/posts/折腾Windows睡眠功能实录/img/pic8.png new file mode 100644 index 0000000..8a2cb5b Binary files /dev/null and b/content/posts/折腾Windows睡眠功能实录/img/pic8.png differ diff --git a/content/posts/折腾Windows睡眠功能实录/index.md b/content/posts/折腾Windows睡眠功能实录/index.md index 42d8716..f90208b 100644 --- a/content/posts/折腾Windows睡眠功能实录/index.md +++ b/content/posts/折腾Windows睡眠功能实录/index.md @@ -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%后卡死** \ No newline at end of file +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) \ No newline at end of file