watchdog: BUG soft lockup - CPU#1 stuck for ○○s! [yyyyy:12345]

## プロローグ
とある昼下がり、Docker上に立てたWebサーバーが急に接続できなくなった。


## エラー内容
![PXL_20230829_121042282.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532627/9efdca96-b098-ee38-f08b-1d16960151d5.jpeg)

どうやらCPUが応答していない。libvipsというプロセスが原因のようだ。

## ひとまずスペック確認

### ハード
|  |型番 |スペック  |
|---|---|---|
|CPU  |**AMD Ryzen5 1600**  |6コア12スレッド 3.2GHz |
|RAM  |**CFD W4U3200CS-16G**  |32GB DDR4-3200 16G*2枚  |
|SSD  |**WD Blue SN570 NVMe WDS100T3B0C**  |1TB SSD M.2 |
|M/B  |**ASRock X370 Pro4**  |X370-AM4-DDR4- PCIe 3.0 |
|G/B  |**GT710-SL-2GD3-BRK-EVO** |NVIDIA GeForce GT 710  |
|電源 |**PQ650M R-PQ650M-FA0B-JP**|650W 80PLUS GOLD|

### ソフト・OS
OS: Ubuntu Server 22.04.02 LTS (Jammy)

## 対処方法

### CPUのC6モード設定
[disksystem様の記事](https://qiita.com/disksystem/items/27bc42ab7e2767a406e4)
ハード構成上C6モード(省電力切り替え)の設定に起因するもののようです。

### NVIDIAのドライバ更新
   `ubuntu-drivers devices`でグラフィックカードのモデルと推奨ドライバをチェック
```linux: ubuntu-drivers devices
    == /sys/devices/pci0000:00/0000:00:03.1/0000:26:00.0 ==
modalias : pci:v000010DEd0000128Bsv00001043sd00008899bc03sc00i00
vendor   : NVIDIA Corporation
model    : GK208B [GeForce GT 710]
driver   : nvidia-driver-450-server - distro non-free
driver   : nvidia-driver-470-server - distro non-free
driver   : nvidia-driver-418-server - distro non-free
driver   : nvidia-driver-390 - distro non-free
driver   : nvidia-driver-470 - distro non-free recommended #推奨はコレ
driver   : xserver-xorg-video-nouveau - distro free builtin
```
`sudo ubuntu-drivers install nvidia-driver-470 `で推奨ドライバを入れる

### GRUBブートの変更

`/etc/default/grub`で `GRUB_CMDLINE_LINUX_DEFAULT=""`に`nouveau.modeset=0`を追記する。
もし`quiet splash`があったら、その後に追記する。(`GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nouveau.modeset=0"`)
```linux:/etc/default/grub
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="nouveau.modeset=0" <=ココ
GRUB_CMDLINE_LINUX=""
```
追記したら、`sudo update-grub`で設定を反映する。
その後、再起動。
※もしエラーが続く場合は、ビデオドライバをロードしないオプションの`nomodeset`を使うことができます。


## 作業を終えて
設定前まではおおよそ2～14時間に1回のペースでCPU stuckを起こしていたが、設定後は2日間連続で稼働している。
ただ、AMD公式のコミュニティでも2020年までずっと議論されていたようで、根本的な解決には至っていなかった点は注意が必要である。

ログを参照するとstuckの前にDockerのエラーっぽいものもあったので、Docker, Docker-compose周りの問題を探ってみたり、グラフィックボードの問題なのか調べてみたりして、1日間は丸々溶かした。
問題調査にあたっては、公式他、スペイン語圏の記事に助けられた。スペイン語出来て得した…
引き続きCPUの温度管理をしながら監視していくしかない気がする。そうでなければハードの組み直しも検討するのが良いだろう。

## 追跡記録
 - 2023/09/02 [稼働して5日間経過] 
 問題なく稼働し続けている。サーバーへのアクセス数も増えているが、目立ったエラーもなく、CPU,メモリも問題ない。
- 2023/09/05 [稼働して8日間経過]
サーバーのsyslog,dmseg, kern_log等では異常も見当たらず、順調に稼働している。CPUの温度も問題ない。

## 参考URL
  - [RyzenでProxmoxVEを組むとフリーズする件](https://qiita.com/disksystem/items/27bc42ab7e2767a406e4)
  - [Ubuntuくんには気を付けよう!インストール方法やPCにNVIDIA積んでいる場合の不具合について](https://qiita.com/rikukaikuu/items/e6248aa058290c90387d)
  - [watchdog: BUG: soft lockup - on Ryzen 9 3950X CPU](https://community.amd.com/t5/processors/watchdog-bug-soft-lockup-on-ryzen-9-3950x-cpu/m-p/447598)
  - [Solucionar error Linux BUG: soft lockup - CPU stuck](https://gigastur.es/solucionar-error-linux-bug-soft-lockup-cpu-stuck)
  - [Solución a watchdog soft lockup cpu# error al instalar Ubuntu](https://nksistemas.com/solucion-a-watchdog-soft-lockup-cpu-error-al-instalar-ubuntu/)
  -