ethOSでGPU単位にEthereumマイニングの設定をチューニングします。同じメーカの同じ品名であっても内部的には使用しているメモリなどのパーツが異なり、GPU単位での設定が必要になることがあります。
使用した環境
- ethOS 1.3.1
- ZOTAC GEFORCE GTX 1060 3GB
設定値の初期化
NVIDIAのコマンドで、チューニングを行うベースの設定に変更します。以下のコマンド例は、GPU0のパラメータを変更していますが、4枚のグラフィックボードを使用しており、nvidia-settingsでは、GPU0の指定がGPUの最後の番号になるために「3」を指定しています。GPUのUUIDを指定するほうがわかりやすいかもしれません。
$ sudo nvidia-smi -i 0 -pl 80 $ sudo nvidia-settings -a '[gpu:3]/GPUGraphicsClockOffset[3]=0' $ sudo nvidia-settings -a '[gpu:3]/GPUMemoryTransferRateOffset[3]=0' $ sudo nvidia-settings -a '[fan:3]/GPUTargetFanSpeed=75'
以下のコマンドでGPU0のコアクロック数とメモリクロック数を確認します。5秒おきに値を取得しています。
$ nvidia-smi -q -d CLOCK -l 5
以下のコマンドで、供給電力とFANの回転速度を確認します。5秒おきに値を取得しています。
$ nvidia-smi -l 5
以下のコマンドでハッシュレートを確認します。値は、自動で更新されていきます。wwコマンドが使用できない場合は、show minerコマンドを使用します。
$ ww
以下、チューニング結果を表にしてみました。メモリクロックを決めて、供給電力とFANの回転速度を調整します。*をつけた値が前回のチューニング値から変更したパラメータです。メモリクロックを変更すると自動でコアクロックが変わっていく事象が発生しています。また、Ethereumではコアクロックを下げてもハッシュレートがかわらず、チューニングのポイントではないようです。
No | cor | mem | pwr | fan | hashrate |
---|---|---|---|---|---|
1 | 1721 | 3800* | 80 | 75 | 20.03 |
2 | 1695 | 3900* | 80 | 75 | 20.58 |
3 | 1683 | 4000* | 80 | 75 | 21.10 |
4 | 1657 | 4100* | 80 | 75 | 21.72 |
5 | 1632 | 4200* | 80 | 75 | 22.29 |
6 | 1620 | 4300* | 80 | 75 | 22.82 |
7 | 1594 | 4400* | 80 | 75 | 23.40 |
8 | 1392* | 4400 | 80 | 75 | 23.40 |
9 | 1506 | 4400 | 69* | 50* | 23.31 |
全く同じメーカの同じ品名ですが、ハッシュレートが全く異なるボードがあり、チューニングを試みます。※インターネット上の情報では、hynicsのメモリを積んでいるグラフィックボードのようです。
No | core | mem | pwr | fan | hashrate |
---|---|---|---|---|---|
1 | 1797 | 3800* | 80 | 75 | 15.78 |
2 | 1733 | 4000* | 80 | 75 | 17.54 |
3 | 1683 | 4200* | 80 | 75 | 18.49 |
4 | 1759 | 3650* | 80 | 75 | 17.33 |
5 | 1556* | 3650 | 80 | 75 | 17.42 |
6 | 1227 | 3650 | 62* | 60* | 17.71 |
メモリクロックを3650MHzあたりまで下げるといきなりハッシュレートが上がり、コアクロック数を下げると微増、供給電圧を下げるとまた微増するという不思議なグラフィックボードです。ワットパフォーマンスを考慮して、少ない供給電力で稼働させることにしました。
おわりに
GPU毎に個別にチューニングを行うことで、ハッシュレートの改善を行うことができました。同じ品名の製品であっても使用しているパーツが異なり、グラフィックボード毎にチューニングを行うことで、より最適なチューニングを行うことができます。