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


回答:


5

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

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

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

機能したのはsudo startx、を開いて/var/log/Xorg.0.log(または、出力の「ログファイル:」の行にある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"'

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

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


この方法で各GPUのファンを個別に制御できますか?この方法を使用したEVGA 1080 Tiカードは#1(3つのファンの)のみを変更することを確認しました。非標準の構成方法(EVGAなど)を使用しないLinuxフレンドリーブランドに対する推奨事項はありますか?
ehiller 2017

@ehillerブロワースタイルのファンが1つあるFounder's Editionカードしか持っていません。このようなクーラーは、システム内に複数のカードがある場合にうまく機能します。何がnvidia-settings -q fans表示されますか?(.xinitrc内で実行できます)正しく対処すれば、すべてのファンを調整できます。
Aleksandr Dubinsky 2017

1
@ArinわからないがAllowEmptyInitialConfiguration、xorg.confで正しいPCI IDに適切に設定されている?そのファイルは扱いにくい場合があります。
Aleksandr Dubinsky 2018

1
:自動的にxorg.confファイルを生成するために、NVIDIAが提供する、それはかなり素晴らしい作品There'aツールnvidia-xconfig --allow-empty-initial-configuration --enable-all-gpus --cool-bits=28 --separate-x-screens
ヒューバートペロン

1
AfaikカスタムBIOSをいじらずにNVIDIA GPUを弱体化させることはできません。代わりに、ソフトウェアの電力制限値をワットで設定していますnvidia-smi -pl 120。これにより、すべてのGPUの電力消費が120Wに制限されます。nvidia-smiまたはを使用してコアとメモリをオーバークロック/アンダークロックすることもできnvidia-settingsます。例をオーバークロックありますnvidia-smiここドキュメント:devblogs.nvidia.com/...は、 あなたがしている場合はnvidia-settingsインストールしますが、特定のクロックを使用することなく、クロック・オフセットを適用することができますnvidia-settings -a [gpu]/GPUGraphicsClockOffset[3]=100
ヒューバートペロン

2

@AlexsandrDubinskyの提案に似た処理を行うために、pipでインストール可能なPythonスクリプトを記述しました

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


ありがとう!私が理解しようとしたができなかったのは、Docker内でこのすべてを実行し、Xサーバーのインストールを回避する方法です。これを試しましたか?
Aleksandr Dubinsky

試したことがないので残念ですが、Xサーバーにアクセスできない状態でこれを行う方法は考えられません。ファンの速度を別の方法で設定する必要がありますnvidia-settings
アンディジョーンズ

まあ、nvidiaドライバーはコンテナー内でアクセス可能で、CUDAなどの実行に使用できます。Xサーバーを起動してnvidiaドライバーと通信させることは可能だと思いますが、今のところ運がありません。
Aleksandr Dubinsky
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.