Debian 9.3 Nvidia-dokcerでMonacoinのマイニング
当サイトではアフィリエイト広告を利用しています
これまでに組んだLinux自作PC(Debian Stretch 9.3.0)とGeforce 1070環境において、Nvidia-dokcerを用いたマイニング環境の構築を行ってみます。
Linux+Geforceにおけるマイニング
現在、巷に多くあるマイニング環境の構築ではWindowsかマイニング専用OSを使った構築が多く、Linux(Debian)を使った構築は少ないように思えます。
現在私が構築したLinux自作PC(Debian Stretch 9.3.0)とGeforce 1070による環境は、ディープラーニング使用も想定しているため、LinuxかつGeforce(CUDA)は必須条件でした。ディープラーニングに使っていない時間がもったいないので、同じ環境でマイニングをさせるため、必要な設定を行っていきましょう。
採掘コインの選定
GPUマイニングは基本的にRadeon優勢みたいですが、Geforceに適した仮想通貨もいくつか存在しています。 今回は、WatToMineというサイトを使って、Geforce1070で効率のいい仮想通貨を探してみます。
Geforce 1070で調査してみると、MonaCoin、BitcoinGold、Vivo、LBRY、Zcashあたりがリストアップされました。 今回は日本の取引所でも扱いのあるMonacoinを試しに採掘してみましょう。
ウォレットの用意
今回はBitflyerのMonacoinウォレットを送付先としました。以前の経営破たんしたMtGoxとは異なり、現在の国内取引所は正式に認可を受けているところであれば即座に資産が消し飛ぶ可能性は低そうに見えます。
とはいえ、完全に安全とはいいがたいので、気になる方はローカルウォレットの使用がよいでしょう。
採掘所の登録
今回はVip Poolという採掘所に登録して、マイニングツール用のワーカーの登録も行います。
MonacoinのLyra2REv2のハッシュレートは1070で35.88MH/sとなっています。 Difficultyは16で指定しておくことにします。
マイニングツールはプール推奨のccminerを使います。
Nvidia-Docker
dockerを使ったコンテナ化により、マイニングツールに悪意あるプログラム紛れていた時の簡易対策と、環境構築の再現性の高さを両立させます。
Dockerfileの作成
Dockerfile
という名前で以下のようなファイルを作成します。
ユーザー名のminerとパスワードは適宜置き換えてください。
From nvidia/cuda:8.0-devel
LABEL maintainer "xxxx"
# install packages
RUN apt-get update
RUN apt-get install -y wget libssl-dev libcurl4-nss-dev automake git build-essential vim sudo
# add user with sudo
RUN groupadd -g 1000 miner && \
useradd -g miner -G sudo -m -s /bin/bash miner && \
echo "miner:xxxx" | chpasswd
RUN echo 'Defaults visiblepw' >> /etc/sudoers
RUN echo 'miner ALL=(ALL) ALL' >> /etc/sudoers
USER miner
記述が完了したら、Dockerfileの存在するディレクトリで以下のコマンドを用いてイメージを作成します。
$ sudo docker build -t local:gpuminer ./
minerのbinディレクトリの同期
dockerコンテナは終了時に初期化されるため、makeしたバイナリを保存する必要があります。
dockerでホストとゲストでディレクトリの共有を行うには、-v /host/path:/container/path
で同期が可能です。
ホスト側で/home/xxxx/cryptcurrency/volume
とでもしておき、コンテナ側は/home/volume
としておきました。
/home/volume/bin/
以下にmakeしたバイナリを置いていくことにします。
起動シェルスクリプトの作成
dockerの起動には必要なオプションが多いので、次のように起動用のシェルスクリプトrun-docker.sh
を用意した。
#!/bin/bash
docker run --runtime=nvidia --rm -it \
-v /home/xxxx/cryptocurrency/volume:/home/volume \
local:gpuminer \
/bin/bash
イメージの起動とccminerのビルド
docker環境下でccminerをcloneしてビルドを行います。
$ sudo bash run-docker.sh
$ git clone https://github.com/djm34/ccminer-lyra.git
$ CUDA=/usr/local/cuda
$ export PATH=$PATH:$CUDA/bin
$ cd ccminer-lyra
$ bash autogen.sh
$ ./configure LDFLAGS="-L/usr/local/cuda/lib64"
$ make
作成したバイナリファイルccminerを/home/volume/bin/に配置します。
ccminerの起動
VIP Poolで作成したWorker情報を用いて、ccminerを起動します。
$ ccminer -a lyra2v2 -o stratum+tcp://stratum1.vippool.net:8888 -u Weblogin.WorkerName -p WorkerPassword
これで正常な動作を確認できました。
動作モニタ
動作時のハッシュレートは大体14MH/sくらいでした。 nvidia-smiも見るとファンも動いて70℃前後です。 GPUメモリ8Gのうち1Gしか使っていないのはもったいない気もします。
ただ、1070の推定ハッシュレートは35.88MH/sなので、理論値には届いていません。 速いバージョンのものを使ったりチューニングする必要がありそうです。
$ nvidia-smi
Wed Dec 20 xx:xx:xx 2017
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 375.82 Driver Version: 375.82 |
|-------------------------------+----------------------+----------------------+
| 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 1070 Off | 0000:01:00.0 Off | N/A |
| 23% 67C P2 127W / 185W | 1137MiB / 8114MiB | 99% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 4695 C ./ccminer 1135MiB |
+-----------------------------------------------------------------------------+
チューニング
ccminerのオプションでintensityの設定を-i 21
で設定したところGPU使用メモリ4.2Gに上がり、ハッシュレートも15MH/s程度とわずかに上昇しました。
これでも理論値は程遠いものがあります。
参考
次の記事を参考に設定しました。
今後
ccminerのハッシュレートが想定より低かったので、この解決を行いたいと思います。