5
4

More than 1 year has passed since last update.

RyzenでProxmoxVEを組むとフリーズする件

Last updated at Posted at 2021-01-10

はじめに

ProxmoxVEでサーバーを構築したのだが定期的にダウンしていた。原因が分かったため記事にする。

追記(Proxmox7以降の話)

pythonコマンドが無くなり、python3となりました。python3とコマンドは置き換えてください。この記事で適用したcronの設定もアップグレード後には機能しなくなっているはずです。

マシンの構成

CPU:AMD Ryzen 5 1600 https://kakaku.com/item/K0000954888/
GPU:Geforce GTX 1050Ti https://kakaku.com/item/K0000921781/
マザボ:ASRock AB350 PRO4 https://kakaku.com/item/K0000947191/

障害発生時の状況

フリーズ時の実際の写真。
rotate_log.jpg

文字に起こしてみると以下のような内容。

login: [1192.106507] watchdog: BUG soft lockup - CPU#11 stuck for 23s [pvesr:31246]
[16.102216] watchdog: BUG soft lockup - CPU#10 stuck for 22s [kworker/10:3:6830]
[20.106166] watchdog: BUG soft lockup - CPU#11 stuck for 23s [pvesr:31246]
[44.106166] watchdog: BUG soft lockup - CPU#10 stuck for 22s [kworker/10:3:6830]

節電のためC6ステートに切り替えを行ったときに不具合が発生するらしい。

Ryzen linux kernel bug 196683 - Random Soft Lockup
https://community.amd.com/t5/processors/ryzen-linux-kernel-bug-196683-random-soft-lockup/td-p/156304

直し方

"ZenStates-Linux"というPythonコードを使用するとRyzenのC6を無効化できる。msrモジュールを事前に有効化させる必要がある。

msrモジュールを自動で読み込むようにする

vim /etc/modules

# 中に以下を追記
msr

GitHubからコードを落とす
ZenStates-Linux
https://github.com/r4m0n/ZenStates-Linux

git clone https://github.com/r4m0n/ZenStates-Linux.git

現在のC6ステートを確認。C6が有効であることがわかる。

sudo python c6_state_check/ZenStates-Linux/zenstates.py -l
P0 - Enabled - FID = 80 - DID = 8 - VID = 32 - Ratio = 32.00 - vCore = 1.23750
P1 - Enabled - FID = 8C - DID = A - VID = 50 - Ratio = 28.00 - vCore = 1.05000
P2 - Enabled - FID = 7C - DID = 10 - VID = 68 - Ratio = 15.50 - vCore = 0.90000
P3 - Disabled
P4 - Disabled
P5 - Disabled
P6 - Disabled
P7 - Disabled
C6 State - Package - Enabled
C6 State - Core - Enabled

# Proxmox7以降
sudo python3 c6_state_check/ZenStates-Linux/zenstates.py -l

C6を無効化してみる

sudo python c6_state_check/ZenStates-Linux/zenstates.py --c6-disable
Disabling C6 state

# Proxmox7以降
sudo python3 c6_state_check/ZenStates-Linux/zenstates.py --c6-disable
Disabling C6 state

結果を確認。C6が無効化されている。

sudo python c6_state_check/ZenStates-Linux/zenstates.py -l
P0 - Enabled - FID = 80 - DID = 8 - VID = 32 - Ratio = 32.00 - vCore = 1.23750
P1 - Enabled - FID = 8C - DID = A - VID = 50 - Ratio = 28.00 - vCore = 1.05000
P2 - Enabled - FID = 7C - DID = 10 - VID = 68 - Ratio = 15.50 - vCore = 0.90000
P3 - Disabled
P4 - Disabled
P5 - Disabled
P6 - Disabled
P7 - Disabled
C6 State - Package - Disabled
C6 State - Core - Disabled

# Proxmox7以降
sudo python3 c6_state_check/ZenStates-Linux/zenstates.py -l

全くキレイなやり方ではないが、cronに入れて起動時に設定されるようにする。

crontab -e

# 一番最後の行に以下追記
@reboot sudo python c6_state_check/ZenStates-Linux/zenstates.py --c6-disable

# Proxmox7以降
@reboot sudo python3 c6_state_check/ZenStates-Linux/zenstates.py --c6-disable

最後に

マザーボードの蟹NIC用ドライバーが不安定なため、サーバーが機能しなくなることが度々あった。PCI Passthroughを行っていたため現象を把握しにくかった。

蟹NICを直した話

PCI Passthroughを行うとGPU(Geforce GTX1050Ti)は仮想マシンが持っていってしまう。購入したRyzenにはGPU機能がないためモニターが映らない状態だった。
ProxmoxVEはWeb上のコンソールで管理できるはず…だったのだが、NICが倒れてしまうとお手上げ。

GPU付きのIntelのほうが苦労しなかったかもしれない。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4