Ryzen
目次
マイクロコードのサポートの有効化
amd-ucode パッケージをインストールしてマイクロコードのアップデートを有効にしてください。詳しくはマイクロコードのページを見てください。アップデートによってシステムの安定性に問題をきたす問題が解決されます。マイクロコードはプロプライエタリですが、アップデートすることが強く推奨されます。
Ryzenの微調整
電圧、消費電力、温度の監視
lm_sensors はデフォルトで温度を監視できるはずです。しかし、消費電力や電圧などの詳しい情報については、zenpower3-dkmsAUR が必要です。GUI ベースの監視ツールとしては、Zen 3 CPUs には zenmonitorAUR または zenmonitor3-gitAUR を使用してください。
電力管理、電力不足、オーバークロック
- RyzenAdj — RyzenAdj は、Ryzen モバイルプロセッサの電力管理設定を調整できるコマンドラインツールです。
- Ryzen Controller — Ryzen Controller は RyzenAdj の GUI です。
- amdctl — amdctl は AMD CPUs のアンダー/オーバークロック/電圧調整を行うコマンドラインツールで、現在、AMD CPU ファミリ 10h、11h、12h、15h、16h、17h、19h をサポートしています。
- ZenStates-Linux — ZenStates はクロック速度と電圧を調整するコマンドラインツールです。詳しいセットアップの例は Level1Techs フォーラムにあります。
- ryzen_smu — Ryzen SMU は、特定の AMD Ryzen プロセッサの SMU (System Management Unit) へのアクセスを公開する Linux カーネルドライバーです。例として、5800x3D のアンダーボルテージに使用できます(このスクリプト を参考にしてください)。
カーネルのコンパイル
Ryzen サポートの有効化については Gentoo:Ryzen#Kernel を参照してください。公式にサポートされているカーネルはデフォルトで必要な設定を持っています。
トラブルシューティング
ランダムリブート
ランダムな再起動が発生している場合は、Gentoo:Ryzen#Random_reboots_with_mce_events を参照してください。
Ryzen 5000 シリーズ、特に 5950X と 5900X の高エンドモデルでは、このカーネルバグ に示されているように、おそらく 5.11+ カーネルに関連して、Linux でのわずかな不安定さが存在しているようです。インターネット上の報告を調査して読んでみると、デフォルトの状態では、Windows は Linux カーネルと比較して、CPU をより高い電圧で、より低いピーク周波数で動作させるようです。これは、シリコンロッタリーのドローに応じて、ランダムなアプリケーションのクラッシュや、再起動につながるハードウェアエラーの原因となる可能性があります。次のような dmesg ログでこれらを認識することができます:
kernel: mce: [Hardware Error]: Machine check events logged kernel: mce: [Hardware Error]: CPU 22: Machine Check: 0 Bank 1: bc800800060c0859 kernel: mce: [Hardware Error]: TSC 0 ADDR 7ea8f5b00 MISC d012000000000000 IPID 100b000000000 kernel: mce: [Hardware Error]: PROCESSOR 2:a20f10 TIME 1636645367 SOCKET 0 APIC d microcode a201016
CPU の ID とプロセッサ番号は異なる場合があります。この問題を解決するためには、CPU がピーク周波数で動作するときに安定するように、CPU により高い電圧を供給する必要があります。これを実現する最も簡単な方法は、マザーボードの BIOS 経由でアクセス可能な AMD カーブオプティマイザを使用することです。これにアクセスし、4ポイントの正のオフセットを設定すると、CPU が高負荷で受け取る電圧が増加します。これにより、高い熱放散要件のためにオーバークロックの可能性が制限されるかもしれませんが、安定して動作します。詳細については、このフォーラムの投稿 を確認してください。私が 5950X にこれを行ったとき、私のプロセッサは安定し、周波数と電圧の範囲は Windows で観察されるものにより近くなりました。
スクリーンティアリング(APU)
Xorg を使用しており、スクリーンティアリングが発生している場合は、AMDGPU#Tear free rendering を参照してください。
ソフトロックフリーズ
このバグはよく知られており、bugzilla と launchpad で議論されています。すべてのケースでの解決策は同じではありませんが、こちらは一部のユーザーにとって有効でした。このコマンドecho rcu_nocbs=0-$(($(nproc)-1))
の出力をカーネルパラメータとして追加します。このコマンドnproc
はCPUのスレッドを表示するだけです。このオプションを適用するには、CONFIG_RCU_NOCB_CPU
オプションを持つコンパイル済みのカーネル(例:linux)が必要です。
フリーズの別の原因は、c-statesによって示される省電力管理です。最大の省電力状態であるc6が問題を引き起こすことがあります。カーネルパラメータprocessor.max_cstate=5
の追加はいくつかのケースで役立ちましたが、他のユーザーはこのオプションが適用されないと報告しています。それに対する解決策として、disable-c6-systemdAURパッケージが役立ちました。使用する前に、modprobe msr
を実行してカーネルモジュールを有効にする必要があります。
HP Envy x360 15-bq100naのようなRyzen CPUを搭載したラップトップは、システムがフリーズするCPUソフトロックを経験することがあります。これはカーネルパラメータidle=nomwait
を追加することで回避できます。
一部のケースでは、カーネルパラメータpci=nomsi
が問題を修正します。
他の場合、問題は単に不良なハードウェアであり、新しいものとしてCPUを保証することで問題が解決するかもしれません。
シャットダウン、再起動、サスペンド時のフリーズ
これは Linux でよくサポートされていない(または全くサポートされていない)C6 c-stateに関連しているようです。
この問題を修正するには、UEFI セットアップに移動し、「Power idle control」のようなオプションを探します。その値を「Typical current idle」に変更します。これらの名称はマザーボードの製造元によって異なる場合がありますので、あなたの場合には少し異なるかもしれません。
他の解決策としては、UEFI セットアップで c-states を無効にするか、processor.max_cstate=1
をカーネルコマンドライン引数に追加することが考えられます。