このページの目次
休止とウェイクアップ
概要: 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内容をスワップまたはファイルに書き出し, 全機電源オフ
→ 消費電力: 0W, ウェイクアップ: ~10-30秒 (RAM容量とディスク速度による)
→ カーネルリジューム: スワップイメージをRAMに読み込み → 実行を再開
Suspend-to-RAM の詳細フロー
Hibernate (Suspend-to-Disk)
Runtime PM: デバイスレベルの電源管理
// drivers/base/power/runtime.c
// 各デバイスは独立してサスペンド/リジューム可能 (他のデバイスやプロセスに影響を与えない)
// 自動サスペンドの条件:
// - デバイスがアイドル状態で autosuspend_delay_ms を超過
// - リファレンスがない (pm_runtime_get/put)
// - ドライバが runtime_suspend/runtime_resume をサポート
// PCIe: runtime D3hot (電源オフだが PCIe リンクは維持)
// USB: 選択的サスペンド (個々の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