Ubuntu における nVidia GPU に対する各種設定方法

Ubuntu(Linux)環境におけるGeForceGPUの設定に関する備忘録です.

この記事の想定環境は
OS: Ubuntu 16.04 (他のフレーバー,CentOSでも大丈夫なはず)
GPU: GeForce GTX系

nVidiaドライバーとCUDAはインストール済みとします.

マイニング等でGPUをぶん回す場合,温度管理が必要となってきます.
そこでGPUのファン設定を設定する必要があります. WindowsではMSI Afterburner等で簡単に設定出来ます.

初期設定

Linux においては,画面の設定やグラボの設定は一部 /etc/X11/xorg.conf に書き込み,
その内容が x 起動時に読み込まれ,グラボに設定が反映されたりします.

sudo nvidia-xconfig -a --allow-empty-initial-configuration \
--cool-bits=31 \
--use-display-device="DFP-0" \
--connected-monitor="DFP-0"

上記を実行すると xorg.conf に現在接続されている各デバイスに対し,
allow-empty-initial-configuration , coolbits , DFP を使用するオプションが設定されます.

allow-empty-initial-configurationは,

立ち上げ時に接続されたディスプレイデバイスが検出されない場合でも Xサーバが始動できる新たなオプション

coolbitsの設定については下記のwikiが参考になります.

NVIDIA/ヒントとテクニック - ArchWiki

DFPは,要らないかもしれません.

この状態で 再起動もしくはウィンドウマネージャを再起動すると,設定が反映されます.

ファンの設定

再起動後,下記コマンドでファンスピードを変更出来る.(この場合は100%に)

sudo DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 \
nvidia-settings -a GPUPowerMizerMode=1
sudo DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 \
nvidia-settings -a GPUFanControlState=1
sudo DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 \
nvidia-settings -a GPUTargetFanSpeed=100

gdmやsddmを使っている人は/var/run/以下を適宜変更してください. 複数GPUを積んでいる人は全部同時に変えられます.

オーバークロックの設定

オーバークロックする際は,下記コマンドで持続モードに切り替えます.

nvidia-smi -pm 1

下記コマンドでコアクロックとメモリクロックをオフセットで増やす事が出来ます.

sudo DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 \
nvidia-settings -a "[gpu:0]/GPUGraphicsClockOffset[3]=100"
sudo DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 \
nvidia-settings -a "[gpu:0]/GPUMemoryTransferRateOffset[3]=1000"

上記ではコアクロックを100MHz,メモリクロックを1000MHz増やしています.
複数GPUがある場合は,gpu:1と変えて実行します.
複数同時に変更する場合は [gpu:0]/ を省略します.

コアクロック,メモリクロックの固定

nvidia-smi を使ってクロックを固定出来る.

nvidia-smi -q -d SUPPORTED_CLOCKS

すると利用可能なMemoryクロックと,Graphicsクロックが出るので,
それぞれ最大の,もしくは固定したいクロックを下記コマンドで入力する.
-i に続く番号はGPUの番号

sudo nvidia-smi -i 0 -ac 3505,1662

下記コマンドで Performance State がP0 になっていれば問題ないはず.

nvidia-smi -q -d PERFORMANCE

nvidia-smiに関しては下記のQiitaが参考になります.

qiita.com

GPUの監視
watch -d -n 2 nvidia-smi -i 1 -q -d CLOCK,POWER
参考にしたサイト

nkmrtty.hatenablog.com

Re: [gentoo-user] nvidia-settings over ssh sees my local GPU? - gentoo-user - Gentoo Mailing List Archives

OC Nvidia GTX1070s in Ubuntu 16.04LTS for Ethereum mining · GitHub

hyperbanana.net