2018年6月14日木曜日

Linuxでモナーコインをマイニングする(チューニング編2)

Linuxでモナーコインをマイニングする(チューニング編1)」の続きです。

前回は、nvidia-smiを使ってPersistance ModeとPowerLimitの設定をしましたが、今回はより細かいチューニングとして、FANコントロールとGPUクロック、メモリクロックの設定をしたいと思います。

チューニング編1」の最後でちょっと触れましたが、FANコントロールとGPUクロック、メモリクロックの設定には、nvidia-settingsを使います。

このツールは、X上で動作しているNVIDIAのドライバを叩いて、各種の設定を行いますが、設定を行う前にNVIDIAドライバの設定を変更しておく必要があります。

xorg.confに以下のような設定を追記して下さい。(追記部分は赤字。)
Section "ServerLayout"
    Identifier     "Default Layout"
    Screen      0  "Screen0"
    Screen      1  "Screen1" RightOf "Screen0"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Unknown"
    HorizSync       28.0 - 33.0
    VertRefresh     43.0 - 72.0
    Option         "DPMS"
EndSection

Section "Monitor"
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "Unknown"
    HorizSync       28.0 - 33.0
    VertRefresh     43.0 - 72.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 1060 3GB"
    BusID          "PCI:1:0:0"
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 1060 3GB"
    BusID          "PCI:2:0:0"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "AllowEmptyInitialConfiguration" "True"
    Option         "Coolbits" "31"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
    Option         "AllowEmptyInitialConfiguration" "True"
    Option         "Coolbits" "31"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection
Screenセッション内にある、
Option         "AllowEmptyInitialConfiguration" "True"
は、グラフィックカードにディスプレイが接続されていなくても、ドライバをロードする設定です。
これを記述しておかないと、ディスプレイが接続されていないグラフィックカードではドライバがロードされず、チューニングを行うことができません。
Option         "Coolbits" "31"
は、FANコントロールやGPU/メモリクロックなどの設定変更を許可する設定です。

xorg.confがない場合、
sudo nvidia-xconfig -a --allow-empty-initial-configuration --cool-bits=31
とすることで、上記の内容に近いxorg.confのひな形を作成することができます。

設定が完了したら、システムを再起動させてxorg.confに設定した内容が反映されるようにしてください。

あとは、nvidia-smiと同じく、シェルから各種の設定をしていくだけです。
ただし、nvidia-settingsはXアプリケーションですので、ディスプレイが適切に設定されていないとエラーが発生します。

リモートからターミナルで接続して設定する場合は、下記のようにDISPLAYとXAUTHORITYを指定してから各種コマンドを発行します。
DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 \
nvidia-settings -a '[gpu:0]/GPUPowerMizerMode=1'

DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 \
nvidia-settings -a '[gpu:0]/GPUFanControlState=1'

DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 \
nvidia-settings -a '[fan:0]/GPUTargetFanSpeed=80'
上記の3つの設定で、ファン速度を80%に固定します。
DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 \
nvidia-settings -a "[gpu:0]/GPUGraphicsClockOffset[3]=-100"
上記の設定では、GPUのコアクロックを100MHz分ダウンクロックします
DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 \
nvidia-settings -a "[gpu:0]/GPUMemoryTransferRateOffset[3]=-2000"
上記の設定では、GPUのメモリクロックの設定を2000MHz分ダウンクロックします。

GPUが複数ある場合には、設定値の頭の[gpu:X]の部分のXにデバイス番号を付与して下さい。(デバイス番号は「nvidia-smi -L」で出力されるものと同じものを設定します。)

GPUコアクロックは、マイニングの効率に直結する割に、ダウンクロックしても消費電力はさほど変わらないので、弄らなくてよいです。

一方、メモリクロックについては、「電力効率最適化のチューニング(メモリクロック編)」で書いた通り、下げた分だけ消費電力が下がるか、消費電力が下がって余裕が出た分ブーストが効いてマイニング性能が上がりますので、限界まで下げると良いです。

ただし、画面出力をしているグラフィックカードでメモリクロックを落とすと、描画の負荷が上がり、結果ハッシュレートが下がることがありますので注意して下さい。

上記のxorg.confは、マイニングに使うグラフィックカードで画面出力をする例ですが、CPUの内蔵グラフィックス機能で画面出力を行い、グラフィックカードにはディスプレイを繋がずマイニングに専念させるのが最も効率がよい使い方です。

この設定の仕方については、また別の機会で書いてみたいと思います。

0 件のコメント:

コメントを投稿