Linux 機のグラボを Nvidia から AMD にした
自作PCのグラボを換装したいぞ
まずは掃除
Nvidia のドライバに依存しているものをすべて消す
code:shell
paru -Qs nvidia
code:shell
paru -Rnds nvidia nvtop opencl-nvidia xf86-video-nouveau nvidia-settings
paru -Rnds psensor libxnvctrl
paru -Rnds steam
paru -Rnds nvidia-utils lib32-nvidia-utils
paru -Rnds ffmpeg4.4 opencv telegram-desktop vlc nomacs
paru -Rnds libva-vdpau-driver-chromium
paru -Rnds chromium peek firefox peek obs-studio scrcpy
paru -Rnds chromaprint gst-plugins-bad
paru -Rnds winetricks playonlinux wine lib32-faudio faudio gst-libav guvcview guvcview-common
paru -Rnds electron electron12 electron13 keybase-gui
paru -Rnds electron17 code
paru -Rnds qt5-webengine qt5-webview ffmpeg
必要なものを入れる
mesa は何やらすでに入っていたが
code:shell
pacman -Ss mesa xf86-video-amdgpu
Xorg の設定変更
code:/etc/x11/xorg.conf.diff
Section "Device"
- Identifier "nvidia"
+ Identifier "AMD"
- Driver "Nvidia"
+ Driver "amdgpu"
EndSection
消したものを入れ直す
code:shell
pacman -S steam
resolving dependencies...
:: There are 5 providers available for vulkan-driver:
:: Repository extra
1) amdvlk 2) nvidia-utils 3) vulkan-intel 4) vulkan-radeon 5) vulkan-swrast
Enter a number (default=1): 4
:: There are 4 providers available for lib32-vulkan-driver:
:: Repository multilib
1) lib32-amdvlk 2) lib32-nvidia-utils 3) lib32-vulkan-intel 4) lib32-vulkan-radeon
どちらも vulkan-radeon を選ぶべし
https://www.reddit.com/r/archlinux/comments/oegasb/amdvlk_or_vulkanradeon/
Steam で vulkan が入ったので、ついでに Vivaldi でも有効化しておく。
vivaldi://flags にて enable-vulkan みたいなのがあるので enable
-> しない。Google Docs の表示がおかしくなる(文章校正サジェストが出るところにカーソルが当たると画面にモザイクがかかったようになる)
他は省略
計測ツールセットアップ
一度消した NVTOP も入れ直している。その名前から Nvidia 専用と勘違いしそうになるが NVTOP は AMDGPU もカバーしている上、Radeontop と違ってどのプロセスがどのくらい GPU を食っているかの情報も出してくれるのでとても有益である。
https://github.com/Syllo/nvtop
code:shell
paru -S radeontop nvtop
# lm_sensors の設定情報の作り直し
sudo sensors-detect
普段は lm_sensors を直接ではなく、Psensors を経由して温度を見るのでそっちも直す。
GUI メニューから Sensor Preferences を選ぶと、リストアップされているセンサーの中にいくつか Chip: amdgpu というものがある。
これらのセンサー名が fan1 とか mem みたいに なっており GPU のものだと分からないので、Name を編集して GPU fan1 とかそういう名前に変える。
冷えないなと思ったら
自動でファンが回る設定にしてるのだが、100度でも 7 rpm ってどういうことよ。。
というわけで設定を変えてみた。
AUR だが radeon-profile-git を入れると GUI でファンの制御の設定ができる。root 権限で起動する必要があるのでちょっとドキっとしますな(回避可能。後述)
実際は /sys/class/drm/card0/device/hwmon/hwmon4/pwm1* の値を変更しているだけのようだ。
https://wiki.archlinux.org/title/Fan_speed_control#AMDGPU_sysfs_fan_control
pwm1_enable に 2 を入れると auto(初期値)、1 で設定したカーブに合わせてファンが周り、0 だと固定値で周り続ける。
2 以外の場合は Fan speed が RPM ではなく % で取れるようになるようで、Psensor で拾えてない模様。
とりあえず 1 で動かしてる。
ファンは回転数30%くらいからうるさくなるので、ある温度まではファンを回さずにセミファンレスな動きをさせてもいいかもしれない。
ゲームやビデオ会議のときだけ回して、温度を平穏に保とう。
ただ、radeon-profile の起動中じゃないと制御してくれないような気がする。
paru で radeon-profile-daemon-git を入れ、systemctl で radeon-profile-daemon.service を enable and start する。
これで radeon-profile が一般ユーザで起動できる。
残る radeon-profile の問題として、アプリケーション起動中しか設定したファン制御をしてくれない点がある。
そこで、radeon-profile UI 下部の Configuration タブにて以下を設定する。
General
✔Start minimized
✔Minimize to tray
✔On close hide to tray
Fan
✔Save selected fan control mode
あとは ~/.xprofile に radeon-profile & と書いておけば OK 。
もっとシンプルにファンの制御だけしてくれればいいのなら systemd の service として使えるこっちになる。
https://aur.archlinux.org/packages/amdgpu-fan
比較すると
amdgpu-fan だと AUR のパッケージを 2 つも入れる必要がない
service 的に使いたいのなら radeon-profile でも上記の方法が取れる
が、CUI の場合は amdgpu-fan じゃないと無理だな
amdgpu-fan はファン制御以外のことをしてくれない一方、radeon-profile は色々できる
オーバクロックの設定とか(しないけど)、ステータスの表示とかは何気に便利
GUI も分かりやすいと思う
まあ CUI でグラボの温度が上がることもないだろうし、AUR パッケージ 2 つ入れるデメリットを飲んで radeon-profile でいいかな。
(どうしても気になるのなら root で起動する radeon-profile-daemon 相当のコードを自分で書いたらよろし。まあそこまでする意味ないだろうけど)
CUI で気になるとすれば、夏場に出先から家の PC 起動して繋ぐようなことになったら少々温度が上がりそうだが、その場合はエアコンも遠隔で入れたらいいかねえ。
第三の選択肢。
https://aur.archlinux.org/packages/amdfand-bin
systemctl から起動できる上、GUI 対応もしている(その場合は追加のパッケージが必要そうだが)。
こちらは後発だけあって Rust で開発されているので、文句があったらパッチを当てる気が起きやすいし、Python も使ってないのが嬉しい。
本体リポジトリはこちらで、オーバークロックなどにも対応していることが見て取れる。
https://github.com/Eraden/amdgpud
ちなみに Reddit でも AMD のデフォルトのファン制御だと冷えないっていう話をしている人がいる。
https://www.reddit.com/r/Amd/comments/ck1jjl/difference_between_gpu_temperature_and_junction/hy6weop/?utm_source=reddit&utm_medium=web2x&context=3
#Linux