奇怪的 Windows 睡眠和休眠,从睡眠转换为休眠失败

2 天前
 Librola

前几天开始发现 Windows 主机会自动从睡眠中唤醒,后来观察了一阵子发现唤醒地非常准时,基本上都是睡眠后 1h 左右。

在用 powercfg 确认了没有启动任何定时器,并且关闭了鼠标的唤醒权限后,就一直在想我在哪里设置了 1h 的参数。

昨天看到了 /t/839159 这个帖子,其中提到 Windows 从睡眠转换成休眠会把系统从睡眠状态唤醒,把休眠数据写入硬盘,再进入休眠状态。

于是我想起来了,我之前把 [自动睡眠时间] 设置为了 15min ,而 [自动休眠时间] 设置为了 1h 。疑似是因为这个原因,Windows 会在睡眠后一小时唤醒计算机。

我把 [自动休眠时间] 改为 [从不] 以后,果然自动唤醒的问题消失了。

但是问题并没有完全解决。根据 /t/839159 中的说法,这次自动唤醒是为了进入休眠状态。然而,我的机器每次被自动唤醒之后,并没有成功进入休眠状态,而是会等待 15min 重新睡眠,如此往复。

根据我关闭自动休眠后不再出现自动唤醒来看,这应该确实是为了进入休眠而自动唤醒的,那么也就是说在这次唤醒的过程中我的机器进入休眠失败了。

有大佬能分析一下问题出现在何处吗?

908 次点击
所在节点    Windows
9 条回复
wheat0r
2 天前
该不会是联想的笔记本吧
kuanat
2 天前
这里用技术语言来描述:S0 正常状态,S3 睡眠(持久化到内存),S4 休眠(持久化到硬盘)。

原始问题是,S3->S4 ,中间要经过 S0 吗?技术层面答案是要,但一般语境中认为不需要。操作系统在进入 S3 的时候,会注册一个目标时长的 wake event 回调,即特定时长之后转睡眠。当硬件到达特定时间点,就会 S3->S0 ,此时操作系统会检查唤醒原因,如果是用户的操作,那就继续完全恢复至 S0 ,如果是自己注册的睡眠回调,那就在只唤醒硬盘等必要设备,然后完成休眠准备进入 S4 。

排查故障先看是否能手动进入休眠,很多支持 Modern Standby 的新设备都不支持休眠了。

如果能手动休眠,大概率是 bios 问题,可以反编译 acpi 看哪里出了问题。
yb2313
1 天前
我以前用 win 的时候也遇到过这个情况,后来换 nix+arch 就没出现过这种情况
Donduck
1 天前
看看 hibernate file 类型是 reduced 还是 full
liyafe1997
1 天前
@kuanat 你说错了,「很多支持 Modern Standby 的新设备」不是不支持休眠,而是不支持 S3 睡眠。
Librola
1 天前
@kuanat 感谢大佬长回复。我是可以手动进入休眠的,在这个问题没有解决之前我一直是在需要休眠的时候手动进入休眠,来避免睡眠的频繁自动唤醒。

反编译 acpi 查问题对我来说属于我的知识范围之外的东西了,感觉很难,就这样吧,毕竟现在已经能正常睡眠乐。
kuanat
1 天前
@liyafe1997 #5

感谢指正,我确实说错了。
Picmen
1 天前
@wheat0r 歪个楼,我就是联想,以前不喜欢关机,合盖就走,经常睡眠失败或者休眠失败,一整晚在背包里默默发热...
wheat0r
1 天前
@Picmen #8 安装 Lenovo Vantage 应用,关闭“智能感应”里的所有功能

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1161577

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX