web-dev-qa-db-ja.com

ヘッドレスノードでNVIDIA GPUファンの速度を調整するにはどうすればよいですか?

Linuxを実行しているヘッドレスノードでTitanや1080 Tiなどの複数のコンシューマNVIDIA GPUのファン速度を制御するにはどうすればよいですか?

9

以下は、スクリプト、偽のモニターの接続、または操作を必要としないシンプルな方法で、SSHを介して実行して複数のNVIDIA GPUのファンを制御できます。 Arch Linuxでテストされています。

カードのPCI IDを確認します。

編集:現在、どの方法が最適かわかりません。以前、私はlspci -k | grep -A 2 -E "(VGA|3D)"を提案しました。ただし、これは私の新しいThreadripperシステムで正しいIDを提供しません。

機能したのは、_Sudo startx_を開き、_/var/log/Xorg.0.log_(またはその出力の "Log file:"行の下にあるstartXリストの場所)を開いて、NVIDIA(0): Valid display device(s) on GPU-<GPU number> at PCI:<PCI ID>行を探します。

_/etc/X11/xorg.conf_を編集

3つのGPUマシンの例を次に示します。

_Section "ServerLayout"
        Identifier "dual"
        Screen 0 "Screen0"
        Screen 1 "Screen1" RightOf "Screen0"
        Screen 1 "Screen2" RightOf "Screen1"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BusID          "PCI:5:0:0"
    Option         "Coolbits"       "7"
    Option         "AllowEmptyInitialConfiguration"
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BusID          "PCI:6:0:0"
    Option         "Coolbits"       "7"
    Option         "AllowEmptyInitialConfiguration"
EndSection

Section "Device"
    Identifier     "Device2"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BusID          "PCI:9:0:0"
    Option         "Coolbits"       "7"
    Option         "AllowEmptyInitialConfiguration"
EndSection

Section "Screen"
        Identifier     "Screen0"
        Device         "Device0"
EndSection

Section "Screen"
        Identifier     "Screen1"
        Device         "Device1"
EndSection

Section "Screen"
        Identifier     "Screen2"
        Device         "Device2"
EndSection
_

BusIDは、前のステップで識別したPCI IDと一致する必要があります。オプションAllowEmptyInitialConfigurationを使用すると、モニターが接続されていなくてもXを起動できます。オプションCoolbitsを使用すると、ファンを制御できます。オーバークロックも可能ですが、これは私によってテストされていません。

_/root/.xinitrc_を編集

_nvidia-settings -q fans
nvidia-settings -a [gpu:0]/GPUFanControlState=1 -a [fan:0]/GPUTargetFanSpeed=75
nvidia-settings -a [gpu:1]/GPUFanControlState=1 -a [fan:1]/GPUTargetFanSpeed=75
nvidia-settings -a [gpu:2]/GPUFanControlState=1 -a [fan:2]/GPUTargetFanSpeed=75

cat
_

便宜上、.xinitrcを使用してnvidia-settingsを実行していますが、おそらく他の方法もあります。ここでは、ファンを75%に設定しました。 Xサーバーが空のcatコマンドで終了しないようにしています。これは厳密に必要なわけではありませんが、Xが閉じた場合にカードがP8低電力状態を離れることを拒否するという問題が時々発生します。最初の行は、システム内のすべてのGPUファンを出力します。

Xを起動

_Sudo startx -- :0
_

このコマンドはSSHから実行できます。出力は次のようになります。

_Current version of pixman: 0.34.0
    Before reporting problems, check http://wiki.x.org
    to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
    (++) from command line, (!!) notice, (II) informational,
    (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.0.log", Time: Sat May 27 02:22:08 2017
(==) Using config file: "/etc/X11/xorg.conf"
(==) Using system config directory "/usr/share/X11/xorg.conf.d"

  Attribute 'GPUFanControlState' (pushistik:0[gpu:0]) assigned value 1.

  Attribute 'GPUTargetFanSpeed' (pushistik:0[fan:0]) assigned value 75.


  Attribute 'GPUFanControlState' (pushistik:0[gpu:1]) assigned value 1.

  Attribute 'GPUTargetFanSpeed' (pushistik:0[fan:1]) assigned value 75.


  Attribute 'GPUFanControlState' (pushistik:0[gpu:2]) assigned value 1.

  Attribute 'GPUTargetFanSpeed' (pushistik:0[fan:2]) assigned value 75.
_

温度とクロック速度を監視する

_nvidia-smi_を使用して、温度と消費電力を監視できます。温度が低いほど、カードのクロックが高くなり、消費電力が増加します。 _Sudo nvidia-smi -pl 150_を使用して消費電力を制限し、カードを冷やしておくか、_Sudo nvidia-smi -pl 300_を使用してオーバークロックさせることができます。私の1080 Tiは、150 Wの場合は1480 MHz、300 Wの場合は1800 MHz以上で動作しますが、これはワークロードによって異なります。 _nvidia-smi -q_または具体的には_watch 'nvidia-smi -q | grep -E "Utilization| Graphics|Power Draw"'_を使用して、クロック速度を監視できます。

自動ファン管理に戻ります。

リブート。私はファンを自動化する別の方法を見つけていません。

5

pip-installable Python @AlexsandrDubinskyの提案に似たスクリプトを記述したスクリプト を記述しました。

Fans.pyを実行すると、偽のディスプレイが接続されたGPUごとに一時的なXサーバーが設定されます。次に、数秒ごとにGPUをループし、温度に応じてファン速度を設定します。スクリプトが停止すると、ファンの制御がドライバーに戻り、Xサーバーがクリーンアップされます。

2
Andy Jones