AMD Ryzen 9 5900Xのpassmarkスコアが約4万!、AMDいいなーと思っていましたが、Ubuntuで不安定との記事をちらほら見かけて、躊躇していました。あるとき、AMDとUbuntuを安定動作させているという記事を見かけて、よし、なんとかなりそうと、ポチっとしました。
Ubuntu 21.10
AMD Ryzen にはkernel 5.8以上が必要とのこと。Ubuntuバージョンの選択肢は2つです。
1つ目は、20.04 LTS。kernel 5.4なので、別途kernel 5.8以上にアップデートしなければいけません。
2つ目は、21.10。kernel 5.13ですが、サポート期間が9ヶ月しかなく、半年リリースごとにアップグレードしなければいけません。
20.04 LTSですが、これまで、LTSの2年ごとのアップグレードのたびにクリーンインストールしてきました。どういうことかというと、14→16へアップグレードしたところ起動しなくなり、16をクリーンインストール。16→18へのアップグレードも起動しなくなり、18をクリーンインストール。
いま、20.04 LTSをインストールすると、来年4月には 22.04 LTS がリリースされて、またクリーンインストールか?と少し憂鬱です。
21.10は、もしかしたら半年リリースのバージョンのほうが、クリーンインストールせずに、アップグレードできるかもという期待もあって、最新の21.10を選びました。
AMD Ryzen向けの設定
BIOSのアップデート
BIOSバージョンは最新でした。
BIOSに入り、Advanced>CPU Configurationで、「SVM Mode」を「Enabled」に設定します。
Kernelのアップデート
AMD Ryzenには、kernel 5.8以上が必要です。
Ubuntu 21.10は、kernel 5.13 なので、これもスキップ。以下、手順だけ記載。
現在のKernelのバージョンを確認します。
$ uname -r
5.13.0-21-generic
Code language: Bash (bash)
インストール可能なKernelのバージョンを確認します。
$ sudo apt-cache search linux-image-5
linux-image-5.13.0-1004-kvm - Signed kernel image kvm
linux-image-5.13.0-1005-aws - Linux kernel image for version 5.13.0 on 64 bit x86 SMP
linux-image-5.13.0-1005-gcp - Signed kernel image GCP
linux-image-5.13.0-1006-azure - Signed kernel image azure
linux-image-5.13.0-1008-oracle - Signed kernel image oracle
linux-image-5.13.0-19-generic - Signed kernel image generic
linux-image-5.13.0-19-lowlatency - Signed kernel image lowlatency
linux-image-5.13.0-1005-kvm - Signed kernel image kvm
linux-image-5.13.0-1006-aws - Linux kernel image for version 5.13.0 on 64 bit x86 SMP
linux-image-5.13.0-1006-gcp - Signed kernel image GCP
linux-image-5.13.0-1007-azure - Signed kernel image azure
linux-image-5.13.0-1009-oracle - Signed kernel image oracle
linux-image-5.13.0-20-generic - Signed kernel image generic
linux-image-5.13.0-20-lowlatency - Signed kernel image lowlatency
linux-image-5.13.0-21-generic - Signed kernel image generic
linux-image-5.13.0-21-lowlatency - Signed kernel image lowlatency
Code language: Bash (bash)
任意のバージョンのKernelをインストールします。
$ sudo apt install linux-image-5.13.0-21-generic
Code language: Bash (bash)
インストールが完了したらサーバーを再起動します。
$ sudo reboot
Code language: Bash (bash)
CPUのC6ステート(省電力設定)を無効化します
1. Msr-tools
Msr-toolsをインストールします。
$ sudo apt install msr-tools
Code language: Bash (bash)
Msrを実行します。
$ sudo modprobe msr
Code language: Bash (bash)
サーバーの起動時にmsrが実行されるようにするため、設定ファイルにmsrと追記します。
$ sudo nano /etc/modules-load.d/modules.conf
Code language: Bash (bash)
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
msr
Code language: plaintext (plaintext)
2. C6ステートを無効化するスクリプト
C6ステートを無効化するスクリプトをダウンロードします。
$ cd ~/Downloads
$ git clone https://github.com/r4m0n/ZenStates-Linux.git
Code language: Bash (bash)
入手したスクリプトをbinディレクトリにコピーします。
$ sudo cp ZenStates-Linux/zenstates.py /usr/local/bin/zenstates.py
Code language: Bash (bash)
サーバーの起動時にスクリプトが実行されるための設定ファイルを作成します。
$ sudo nano /etc/systemd/system/disable-c6.service
Code language: Bash (bash)
[Unit]
Description=Ryzen Disable C6
DefaultDependencies=no
After=sysinit.target local-fs.target suspend.target hibernate.target
Before=basic.target
[Service]
Type=oneshot
ExecStart=python3 /usr/local/bin/zenstates.py --c6-disable
[Install]
WantedBy=basic.target suspend.target hibernate.target
Code language: plaintext (plaintext)
サーバーの起動時にスクリプトが実行されるようにします。
$ sudo systemctl enable disable-c6.service
Code language: Bash (bash)
3. Grub設定
Grubの設定ファイルを編集します。
$ sudo nano /etc/default/grub
Code language: Bash (bash)
C6ステートを無効化するパラメータをGRUB_CMDLINE_LINUX_DEFAULTに追記し、保存します。
編集前
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
Code language: Bash (bash)
編集後
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash processor.max_cstate=1 intel_idle.max_cstate=0"
Code language: plaintext (plaintext)
Grubを更新します。
$ sudo update-grub
Code language: Bash (bash)
サーバーを再起動します。
$ sudo reboot
Code language: Bash (bash)
C6ステートが無効化されていることを確認する。(「C6 State – Package」と「C6 State – Core」がDisabledになっていればOK)
$ sudo python3 /usr/local/bin/zenstates.py -l
P0 - Enabled - FID = 94 - DID = 8 - VID = 48 - Ratio = 37.00 - vCore = 1.10000
P1 - Enabled - FID = 8C - DID = A - VID = 58 - Ratio = 28.00 - vCore = 1.00000
P2 - Enabled - FID = 84 - DID = C - VID = 68 - Ratio = 22.00 - vCore = 0.90000
P3 - Disabled
P4 - Disabled
P5 - Disabled
P6 - Disabled
P7 - Disabled
C6 State - Package - Disabled
C6 State - Core - Disabled
Code language: Bash (bash)
NVMeのAPST(省電力設定)を無効化する
1. NVME-cliをインストールします
$ sudo apt install nvme-cli
Code language: Bash (bash)
2. Grub設定
Grub(OS起動時に実行されるプログラム)の設定ファイルを編集します。
$ sudo nano /etc/default/grub
Code language: Bash (bash)
APSTを無効化するパラメータをGRUB_CMDLINE_LINUX_DEFAULTに追記し、保存します。
編集前
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash processor.max_cstate=1 intel_idle.max_cstate=0"
Code language: Bash (bash)
編集後
$ GRUB_CMDLINE_LINUX_DEFAULT="quiet splash processor.max_cstate=1 intel_idle.max_cstate=0 nvme_core.default_ps_max_latency_us=0"
Code language: Bash (bash)
Grubを更新します。
$ sudo update-grub
Code language: Bash (bash)
サーバーを再起動します。
$ sudo reboot
Code language: Bash (bash)
パラメータが反映されているか確認します。
$ cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-5.13.0-21-generic root=UUID=198727da-3014-4f2b-ac63-a6a2d706d6da ro quiet splash processor.max_cstate=1 intel_idle.max_cstate=0 nvme_core.default_ps_max_latency_us=0 vt.handoff=7
Code language: Bash (bash)
参考記事
いまのところ、安定して動いているよ。
旧PCと比べて、passmark値は4倍、SSDのread値は10倍になったんでしょ、速くなったの?
ものすごい期待したけど、普通に速くなった感じかな
「速くなった感じ」ではなくて、アプリのビルド時間で言ってよね