Ryzen CPUを載せたPCがハングアップしたがC-Stateを無効化して解決した

Proxmoxをインストールして手軽にVM環境を構築しようと準備していたところ、突然操作を受け付けなくなってしまいました。
そのときの状況と解決方法です。

症状

  • 映像出力できていたはずが反応なし
  • キーボード・マウス操作しても反応なし
  • 他のPCからSSHしてもConnection refused。
  • Pingは反応あり
  • 無操作状態のときになる傾向あり

環境

  • CPU: AMD Ryzen 7 1700
  • メモリ: DDR4-2133 16GB x 2
  • マザーボード: ASRock A320M-ITX(BIOS: P8.02)
  • グラフィックボード: NVIDIA GeForce GT 710
  • OS: Proxmox 8.4.1(Debian 12)

解決

強制的に電源オフしたあとに起動することはできるので、物理的に破損しているとかではないと認識。
CPU名とフリーズについて調べてみたところ、次の方のブログを発見しました。

https://blog.curegit.jp/posts/os/disable-c-state/

BIOSにあるCPU設定のC-Stateを無効にしたら解決したとのことだったので参考にしてみました。

ちなみにC-Stateはアイドル状態のときに消費電力を削減する省電力機能らしい。めっちゃこれっぽい。

C-Stateを無効にする

使っているASRock製マザーボードでのC-State無効は以下の手順で行いました。

  1. F2 または DeleteキーでBIOSへ
  2. Advancedタブを選択
  3. AMD CBSを選択
  4. CPU Common Optionsを選択
  5. Global C-state ControlをEnabledからDisabledに切り替え
  6. 保存して再起動

ハングアップ時の状況を追ってみる

メトリクスを取っていたのでハングアップした時間が21時半ごろだとわかりました。
CPU使用率は0.15%。メモリ使用量は10.16GiB。グラフの変化では特にヒントになりそうなものはありませんでした。その時間帯のログなどを追ってみます。

ログ

$ journalctl
Jul 06 19:17:01 pve CRON[30212]: pam_unix(cron:session): session opened for user root(uid=0) by (uid=0)
Jul 06 19:17:01 pve CRON[30213]: (root) CMD (cd / && run-parts --report /etc/cron.hourly)
Jul 06 19:17:01 pve CRON[30212]: pam_unix(cron:session): session closed for user root
Jul 06 20:17:01 pve CRON[39631]: pam_unix(cron:session): session opened for user root(uid=0) by (uid=0)
Jul 06 20:17:01 pve CRON[39632]: (root) CMD (cd / && run-parts --report /etc/cron.hourly)
Jul 06 20:17:01 pve CRON[39631]: pam_unix(cron:session): session closed for user root
-- Boot 5e80c21895bf45b8812154d880f1af96 --
Jul 06 22:26:12 pve kernel: Linux version 6.8.12-11-pve (build@proxmox) (gcc (Debian 12.2.0-14+deb12u1) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1

journalctlで見てみたけど特に何も出力されてなさそう。

その後

アイドル状態で放置して半日様子みたところ再発なし。いい感じ。