Linuxを実行しているヘッドレスノードで、Titanや1080 Tiなどの複数のコンシューマNVIDIA GPUのファン速度を制御するにはどうすればよいですか?
Linuxを実行しているヘッドレスノードで、Titanや1080 Tiなどの複数のコンシューマNVIDIA GPUのファン速度を制御するにはどうすればよいですか?
回答:
以下は、スクリプト、偽のモニターの接続、または操作を必要としないシンプルな方法で、SSHを介して実行して複数のNVIDIA GPUのファンを制御できます。Arch Linuxでテストされています。
編集:最良の方法が何であるか今はわかりません。以前、私は提案しました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ファンを出力します。
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"'
リブート。ファンを自動化する別の方法を見つけていません。
nvidia-settings -q fans
表示されますか?(.xinitrc内で実行できます)正しく対処すれば、すべてのファンを調整できます。
AllowEmptyInitialConfiguration
、xorg.confで正しいPCI IDに適切に設定されている?そのファイルは扱いにくい場合があります。
nvidia-xconfig --allow-empty-initial-configuration --enable-all-gpus --cool-bits=28 --separate-x-screens
nvidia-smi -pl 120
。これにより、すべてのGPUの電力消費が120Wに制限されます。nvidia-smi
またはを使用してコアとメモリをオーバークロック/アンダークロックすることもできnvidia-settings
ます。例をオーバークロックありますnvidia-smi
ここドキュメント:devblogs.nvidia.com/...は、 あなたがしている場合はnvidia-settings
インストールしますが、特定のクロックを使用することなく、クロック・オフセットを適用することができますnvidia-settings -a [gpu]/GPUGraphicsClockOffset[3]=100
@AlexsandrDubinskyの提案に似た処理を行うために、pipでインストール可能なPythonスクリプトを記述しました。
fans.pyを実行すると、偽のディスプレイが接続されたGPUごとに一時的なXサーバーが設定されます。次に、数秒ごとにGPUをループし、温度に応じてファン速度を設定します。スクリプトが停止すると、ファンの制御がドライバーに戻り、Xサーバーがクリーンアップされます。
nvidia-settings