NVIDIA GPUのファン速度をCLIから設定する方法。


# 結論

1. 手動設定化
    ```
    nvidia-settings -c :0 -a '[gpu:0]/GPUFanControlState=1'
    ```
    
1. ファン速度を40%に変更
    ```
    nvidia-settings -c :0 -a '[fan:0]/GPUTargetFanSpeed=40'
    ```

---
---

# やりたいこと
CLIでGPUのファン速度を手動調節したい。


# 状態
- Ubuntuのバージョン : "22.04.4 LTS (Jammy Jellyfish)"
```bash
$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.4 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.4 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
```
- GPU : NVIDIA GeForce RTX 4060 Ti (8GB)


# 調査
- Linuxのファンスピードをターミナルから操作する方法
    https://forums.developer.nvidia.com/t/how-to-set-fanspeed-in-linux-from-terminal/72705/9
    > この内容は実行したが、わたしの環境ではうまくいかなかった。

- 同上
    https://pyopyopyo.hatenablog.com/entry/2023/01/09/141623
    > この方法でもうまくいかなかった

- chatGPTにnvidia-settingsのヘルプを読み込ませて、どうすればいいか聞いてみた。
    https://chat.openai.com/share/08c1ef6a-ff08-4633-a66c-59e8fff357af
    > どうにかなった。

# 実際にやったこと


最終的には、

1. ファンの設定変更を手動で変更できるようにする。
1. ファンの速度を%で指定する。

のプロセスでやりたいことは実現できる。
以下コマンド例。
```bash
# 手動設定を可能にする
nvidia-settings -c :0 -a '[gpu:0]/GPUFanControlState=1'
# ファン速度を40%に変更
nvidia-settings -c :0 -a '[fan:0]/GPUTargetFanSpeed=40'
```

できてる。
```
$ nvidia-smi
Tue Apr  2 23:41:39 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.54.15              Driver Version: 550.54.15      CUDA Version: 12.4     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 4060 Ti     Off |   00000000:01:00.0 Off |                  N/A |
| 40%   24C    P8              6W /  160W |      77MiB /   8188MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|    0   N/A  N/A      1154      G   /usr/lib/xorg/Xorg                             56MiB |
|    0   N/A  N/A      1261      G   /usr/bin/gnome-shell                            5MiB |
+-----------------------------------------------------------------------------------------+
```


# 感想

割とわからないことだらけだったが、ワードごとに調べていくとわかるようになってくる。
ドメイン知識が身についたら生成AIに何をどいう風に聞けばどういう回答が返ってくるのかわかるので、いい体験だった。
はじめ普通に聞いても教えてくれなかったので、改善策としてヘルプを読み込ませたのだが、うまくいった。
解決策の一つとして試してみる価値はあるもんだなと思った。

出力の元データが存在するのも、記事を残してくれている方や、ドキュメントを書いてくれている方のおかげなので深く感謝します。
ありがとうございました。 :bow: