本页目录
休眠与唤醒
覆盖: suspend-to-RAM (S3) → suspend-to-disk (S4/hibernate) → freeze (suspend-to-idle) → runtime PM → ACPI S-states → 驱动 PM 回调 → 调试 内核版本: 2.6 ~ 6.x
系统休眠状态
suspend-to-idle (freeze / s2idle):
冻结用户进程 + 设备进入低功耗 + CPU idle
→ 功耗: 中等, 唤醒: 最快 (~100ms)
→ 依赖: 所有设备和 CPU 有好的 runtime PM 支持
suspend-to-RAM (S3 / deep):
RAM 自刷新, CPU 和大部分设备断电
→ 功耗: 低 (~1W), 唤醒: ~1-2 秒
→ BIOS/UEFI ACPI S3 支持
suspend-to-disk (S4 / hibernate):
全部 RAM 内容写 swap 或文件, 全机断电
→ 功耗: 0W, 唤醒: ~10-30 秒 (取决于 RAM 大小和磁盘速度)
→ 内核 resume: 读 swap image 回 RAM → 恢复执行
Suspend-to-RAM 详细流程
Hibernate (Suspend-to-Disk)
Runtime PM: 设备级电源管理
// drivers/base/power/runtime.c
// 每个设备可以独立挂起/恢复 (不影响其他设备和进程)
// 自动挂起条件:
// - 设备 idle 超过 autosuspend_delay_ms
// - 无引用 (pm_runtime_get/put)
// - 驱动支持 runtime_suspend/runtime_resume
// PCIe: runtime D3hot (断电但保持 PCIe link)
// USB: selective suspend (挂起单个 USB 设备)
调试
# 支持的休眠状态
# 挂起/唤醒追踪
|
# 哪个设备阻止了挂起
|
# 分析挂起/唤醒延迟
参考
- 源码:
kernel/power/suspend.c,kernel/power/hibernate.c,drivers/base/power/,drivers/acpi/sleep.c - 内核文档:
Documentation/admin-guide/pm/sleep-states.rst,Documentation/power/runtime_pm.rst
关键词: suspend, hibernate, freeze, s2idle, S3, S4, runtime PM, pm_wakeup, ACPI