前几天开始发现 Windows 主机会自动从睡眠中唤醒,后来观察了一阵子发现唤醒地非常准时,基本上都是睡眠后 1h 左右。
在用 powercfg
确认了没有启动任何定时器,并且关闭了鼠标的唤醒权限后,就一直在想我在哪里设置了 1h 的参数。
昨天看到了 /t/839159 这个帖子,其中提到 Windows 从睡眠转换成休眠会把系统从睡眠状态唤醒,把休眠数据写入硬盘,再进入休眠状态。
于是我想起来了,我之前把 [自动睡眠时间] 设置为了 15min ,而 [自动休眠时间] 设置为了 1h 。疑似是因为这个原因,Windows 会在睡眠后一小时唤醒计算机。
我把 [自动休眠时间] 改为 [从不] 以后,果然自动唤醒的问题消失了。
但是问题并没有完全解决。根据 /t/839159 中的说法,这次自动唤醒是为了进入休眠状态。然而,我的机器每次被自动唤醒之后,并没有成功进入休眠状态,而是会等待 15min 重新睡眠,如此往复。
根据我关闭自动休眠后不再出现自动唤醒来看,这应该确实是为了进入休眠而自动唤醒的,那么也就是说在这次唤醒的过程中我的机器进入休眠失败了。
有大佬能分析一下问题出现在何处吗?
![]() |
1
wheat0r 12 小时 14 分钟前
该不会是联想的笔记本吧
|
![]() |
2
kuanat 11 小时 43 分钟前 via Android
这里用技术语言来描述:S0 正常状态,S3 睡眠(持久化到内存),S4 休眠(持久化到硬盘)。
原始问题是,S3->S4 ,中间要经过 S0 吗?技术层面答案是要,但一般语境中认为不需要。操作系统在进入 S3 的时候,会注册一个目标时长的 wake event 回调,即特定时长之后转睡眠。当硬件到达特定时间点,就会 S3->S0 ,此时操作系统会检查唤醒原因,如果是用户的操作,那就继续完全恢复至 S0 ,如果是自己注册的睡眠回调,那就在只唤醒硬盘等必要设备,然后完成休眠准备进入 S4 。 排查故障先看是否能手动进入休眠,很多支持 Modern Standby 的新设备都不支持休眠了。 如果能手动休眠,大概率是 bios 问题,可以反编译 acpi 看哪里出了问题。 |
![]() |
3
yb2313 10 小时 24 分钟前
我以前用 win 的时候也遇到过这个情况,后来换 nix+arch 就没出现过这种情况
|
4
Donduck 9 小时 28 分钟前
看看 hibernate file 类型是 reduced 还是 full
|
![]() |
5
liyafe1997 9 小时 18 分钟前 ![]() @kuanat 你说错了,「很多支持 Modern Standby 的新设备」不是不支持休眠,而是不支持 S3 睡眠。
|
![]() |
6
Librola OP @kuanat 感谢大佬长回复。我是可以手动进入休眠的,在这个问题没有解决之前我一直是在需要休眠的时候手动进入休眠,来避免睡眠的频繁自动唤醒。
反编译 acpi 查问题对我来说属于我的知识范围之外的东西了,感觉很难,就这样吧,毕竟现在已经能正常睡眠乐。 |
![]() |
7
kuanat 7 小时 50 分钟前
|