NVIDI製GPUのチューニングを行います。マイニング用のマシンに使用したGPUは、「GeForce GTX 1060 3GB」×2です。
記事の目次
使用した環境
- ethOS 1.2.7
GPUのチューニング項目
GPUの以下の値のチューニングを行い、マイニングの最適値を探ります。
- 消費電力
- コアクロック
- メモリクロック
- ファンの回転速度
OSからのGPU確認
OSからのGPUが認識されていることをlspicコマンドで確認します。※オンボードのVGAは、BIOSで無効化しています。
# lspci | grep VGA 02:00.0 VGA compatible controller: NVIDIA Corporation GP106 [GeForce GTX 1060 3GB] (rev a1) 03:00.0 VGA compatible controller: NVIDIA Corporation GP106 [GeForce GTX 1060 3GB] (rev a1)
Xの設定の確認
/etc/X11/xorg.confの設定を確認します。Coolbitsが31など、グラフィックボードの設定変更が可能であることを確認します。
# less /etc/X11/xorg.conf ... Option "Coolbits" "31" ...
消費電力の設定
NVIDIAのグラフィックボードは、nvidia-smiコマンドで状態確認や設定を行うことができます。消費電力の設定を行うため状況確認を行います。
# nvidia-smi Sat Apr 7 06:52:14 2018 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 384.90 Driver Version: 384.90 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 GeForce GTX 106... On | 00000000:02:00.0 Off | N/A | | 85% 54C P2 83W / 120W | 2612MiB / 3011MiB | 99% Default | +-------------------------------+----------------------+----------------------+ | 1 GeForce GTX 106... On | 00000000:03:00.0 Off | N/A | | 85% 58C P2 89W / 120W | 2593MiB / 3013MiB | 100% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | 0 2602 G /usr/bin/X 27MiB | | 0 5613 C /opt/miners/claymore/claymore 2573MiB | | 1 2602 G /usr/bin/X 8MiB | | 1 5613 C /opt/miners/claymore/claymore 2573MiB | +-----------------------------------------------------------------------------+
GPU0、GPU1の消費電力が、80〜90W程度なので、消費電力の設定を80Wに制限してみます。GPUは、-iオプションで個別に指定できます。
# sudo nvidia-smi i 0 -pl 80 Power limit for GPU 00000000:02:00.0 was set to 80.00 W from 120.00 W. # sudo nvidia-smi i 1 -pl 80 Power limit for GPU 00000000:03:00.0 was set to 80.00 W from 120.00 W. All done.
消費電力が80W以下になっていることを確認します。
# nvidia-smi Sat Apr 7 06:52:41 2018 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 384.90 Driver Version: 384.90 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 GeForce GTX 106... On | 00000000:02:00.0 Off | N/A | | 85% 53C P2 78W / 80W | 2612MiB / 3011MiB | 100% Default | +-------------------------------+----------------------+----------------------+ | 1 GeForce GTX 106... On | 00000000:03:00.0 Off | N/A | | 85% 57C P2 78W / 80W | 2593MiB / 3013MiB | 100% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | 0 2602 G /usr/bin/X 27MiB | | 0 5613 C /opt/miners/claymore/claymore 2573MiB | | 1 2602 G /usr/bin/X 8MiB | | 1 5613 C /opt/miners/claymore/claymore 2573MiB | +-----------------------------------------------------------------------------+
GPUのコアクロックの設定
GPUのクコアロックをオフセット値で設定してみます。GeForce GTX 1060は、nvidia-smiコマンドでは、GPUのコアクロック設定が難しいようなので、nvidia-settingsコマンドを使用して設定を行います。
# nvidia-smi -q -d CLOCK ... GPU 00000000:02:00.0 Clocks Graphics : 1847 MHz SM : 1847 MHz Memory : 3802 MHz Video : 1657 MHz ... Max Clocks Graphics : 1911 MHz SM : 1911 MHz Memory : 4004 MHz Video : 1708 MHz ... SM Clock Samples Duration : 13.13 sec Number of Samples : 100 Max : 1847 MHz Min : 1822 MHz Avg : 1842 MHz ... GPU 00000000:03:00.0 Clocks Graphics : 1746 MHz SM : 1746 MHz Memory : 3802 MHz Video : 1569 MHz ... Max Clocks Graphics : 1911 MHz SM : 1911 MHz Memory : 4004 MHz Video : 1708 MHz ... SM Clock Samples Duration : 9.20 sec Number of Samples : 100 Max : 1759 MHz Min : 1708 MHz Avg : 1736 MHz ...
GPUのクロックを最大値にするため、GPU0は100MHz、GPU1は200MHz程度、クロックアップしてみます。※しばらく運用していたらGPU0がGPUの最大値、GPU1→GPU0、GPU2→GPU1、...となってしまったので、値を変更しながらどのGPUに紐付いているか確認が必要です。
# sudo nvidia-settings -a '[gpu:0]/GPUGraphicsClockOffset[3]=100' # sudo nvidia-settings -a '[gpu:1]/GPUGraphicsClockOffset[3]=200'
結果を確認します。
# nvidia-smi -q -d CLOCK ... GPU 00000000:02:00.0 Clocks Graphics : 1911 MHz SM : 1911 MHz Memory : 3802 MHz Video : 1708 MHz ... Max Clocks Graphics : 1911 MHz SM : 1911 MHz Memory : 4004 MHz Video : 1708 MHz ... SM Clock Samples Duration : 16.40 sec Number of Samples : 100 Max : 1936 MHz Min : 1898 MHz Avg : 1924 MHz ... GPU 00000000:03:00.0 Clocks Graphics : 1911 MHz SM : 1911 MHz Memory : 3802 MHz Video : 1708 MHz ... Max Clocks Graphics : 1911 MHz SM : 1911 MHz Memory : 4004 MHz Video : 1708 MHz ... SM Clock Samples Duration : 13.53 sec Number of Samples : 100 Max : 1923 MHz Min : 1898 MHz Avg : 1916 MHz
GPUのクロックを最大値の1911MHzに上げることができました。
GPUのメモリクロックの設定
GPUのメモリクロックをオフセット値で設定してみます。GeForce GTX 1060は、nvidia-smiコマンドでは、GPUのメモリクロックの設定が難しいようなので、nvidia-settingsコマンドを使用して設定を行います。
# nvidia-smi -q -d CLOCK ... GPU 00000000:02:00.0 Clocks Graphics : 1898 MHz SM : 1898 MHz Memory : 3802 MHz Video : 1695 MHz ... Max Clocks Graphics : 1911 MHz SM : 1911 MHz Memory : 4004 MHz Video : 1708 MHz ... Memory Clock Samples Duration : 9.04 sec Number of Samples : 100 Max : 3802 MHz Min : 3802 MHz Avg : 3802 MHz ... GPU 00000000:03:00.0 Clocks Graphics : 1898 MHz SM : 1898 MHz Memory : 3802 MHz Video : 1695 MHz ... Max Clocks Graphics : 1911 MHz SM : 1911 MHz Memory : 4004 MHz Video : 1708 MHz ... Memory Clock Samples Duration : 11.63 sec Number of Samples : 100 Max : 3802 MHz Min : 3802 MHz Avg : 3802 MHz
GPUのメモリクロックを最大値にするため、GPU0、GPU1は200MHz程度、クロックアップしてみます。
# sudo nvidia-settings -a '[gpu:0]/GPUMemoryTransferRateOffset[3]=200' # sudo nvidia-settings -a '[gpu:1]/GPUMemoryTransferRateOffset[3]=200'
結果を確認します。
# nvidia-smi -q -d CLOCK ... GPU 00000000:02:00.0 Clocks Graphics : 1898 MHz SM : 1898 MHz Memory : 3898 MHz Video : 1695 MHz ... Max Clocks Graphics : 1911 MHz SM : 1911 MHz Memory : 4004 MHz Video : 1708 MHz ... Memory Clock Samples Duration : 27.22 sec Number of Samples : 100 Max : 3902 MHz Min : 3898 MHz Avg : 3898 MHz ... GPU 00000000:03:00.0 Clocks Graphics : 1873 MHz SM : 1873 MHz Memory : 3898 MHz Video : 1683 MHz ... Max Clocks Graphics : 1911 MHz SM : 1911 MHz Memory : 4004 MHz Video : 1708 MHz ... Memory Clock Samples Duration : 9.19 sec Number of Samples : 100 Max : 3902 MHz Min : 3898 MHz Avg : 3899 MHz
GPUのメモリクロックは、指定値の約半分の100MHz程度クロックアップされました。
GPUのファンの回転速度の設定
GPUのファンの回転速度を設定します。ethOSを使用している場合、ethOSのlocal.confで設定している値が使用されますが、リアルタイムで回転数を変更する場合は、nvidia-settingsコマンドを使用すると便利です。まずは、ファンの回転速度の設定が可能であることを確認します。
# nvidia-settings -q GPUFanControlState Attribute 'GPUFanControlState' (025aeb:0[gpu:0]): 1. 'GPUFanControlState' is a boolean attribute; valid values are: 1 (on/true) and 0 (off/false). 'GPUFanControlState' can use the following target types: GPU. Attribute 'GPUFanControlState' (025aeb:0[gpu:1]): 1. 'GPUFanControlState' is a boolean attribute; valid values are: 1 (on/true) and 0 (off/false). 'GPUFanControlState' can use the following target types: GPU.
GPUの温度を確認します。
# nvidia-settings -q GPUCoreTemp Attribute 'GPUCoreTemp' (025aeb:0.0): 54. 'GPUCoreTemp' is an integer attribute. 'GPUCoreTemp' is a read-only attribute. 'GPUCoreTemp' can use the following target types: X Screen, GPU. Attribute 'GPUCoreTemp' (025aeb:0.1): 57. 'GPUCoreTemp' is an integer attribute. 'GPUCoreTemp' is a read-only attribute. 'GPUCoreTemp' can use the following target types: X Screen, GPU. Attribute 'GPUCoreTemp' (025aeb:0[gpu:0]): 54. 'GPUCoreTemp' is an integer attribute. 'GPUCoreTemp' is a read-only attribute. 'GPUCoreTemp' can use the following target types: X Screen, GPU. Attribute 'GPUCoreTemp' (025aeb:0[gpu:1]): 57. 'GPUCoreTemp' is an integer attribute. 'GPUCoreTemp' is a read-only attribute. 'GPUCoreTemp' can use the following target types: X Screen, G
問題なさそうであれば、GPUのファンの回転速度を調整してみます。以下は、FANの回転数を70%に設定しています。
# nvidia-settings -a GPUTargetFanSpeed=70
ethOS起動時の設定
ethOS起動時にグラフィックボードの設定を変更するためには、ethosユーザのホームディレクトリにあるcustom.shにコマンドを記載しておきます。ファンの回転数は、ethOSのlocal.confで指定する方針です。
# vi ~/custom.sh #!/bin/bash sudo nvidia-smi -pl 80 sudo nvidia-settings -a '[gpu:0]/GPUMemoryTransferRateOffset[3]=200' sudo nvidia-settings -a '[gpu:1]/GPUMemoryTransferRateOffset[3]=200' exit 0
おわりに
GPUの設定を、GPUメーカのコマンドを使用して変更しました。