SSD/NVMeフリーズ問題(サスペンド時)

問題

サスペンド時のフリーズのため、ウェイクアップしないトラブル。ウェイクアップトラブルではありません。

OS:Ubuntu 24.04
Silicon Power製SSD P34A60で発生

対策

NVMeのAPST (Autonomous Power State Transition)の遅延時間の変更

問題の原因

  1. 同期の問題:
  • サスペンド(スリープやハイバネート)時には、システムの各デバイスが適切に低電力状態に移行し、復帰時には再び正常に動作する必要があります。
  • nvme_core.default_ps_max_latency_usの値を大きくすると、NVMeデバイスが低電力状態に遷移するまでの時間が長くなり、この間にシステム全体のサスペンドプロセスが同期できなくなる可能性があります。
  1. 電源管理の不整合:
  • 他のデバイスやシステムの電源管理設定とNVMeデバイスの遅延時間設定が一致しない場合、サスペンド時にフリーズすることがあります。これは、各デバイスが適切に低電力状態に移行するまでのタイミングがずれるためです。

対策の詳細

遅延時間の変更をするため、デフォルトの100000μsから15000μsへ変更。
下記ファイルのGRUB_CMDLINE_LINUX_DEFAULTの項目に以下を追加します。

注)0に設定するとAPSTが無効となり、APSTに関わるトラブルは完全に回避できますが、消費電力・製品寿命との兼合いから0にはしない方がいいでしょう。

nvme_core.default_ps_max_latency_us=15000

/etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nvme_core.default_ps_max_latency_us=15000"

設定を反映させて再起動

$ sudo update-grub
$ sudo reboot

Solid state drive/NVMe - ArchWiki


OS起因のサスペンドバグ:Ubuntu 24.04

 GRUB_CMDLINE_LINUX="intel_iommu=off"

または

 GRUB_CMDLINE_LINUX_DEFAULT="text quiet init_on_alloc=0 intel_iommu=off"