2018-03-15

Linux Mintで仮想通貨のマイニング:Monacoin

ついにLinux Mintでマイニングが動き出しました。非常にゆっくりと。

bitFlyerに口座を持っている都合上、bitFlyerで扱える仮想通貨、かつRadeonで扱える仮想通貨を探していて、Ethereumの次はMonacoinを見つけました。


bitFlyer ビットコインを始めるなら安心・安全な取引所で

相変わらずGPUはRadeon R7 240で、道具はmkxminerのLinux版です。

mkxminerは掘削量の5%を開発者に 持って行かれるそうです。devfeeとのことです。

mkxminerのLinux版は32bitアプリケーションしか用意されていません。Linux Mint 18.3 64bit版を使っていたので動くようになるまでがけっこう大変でした。

32bit環境が正しく用意できていないとエラーが出るよ、と公式サイトに新設にもガイドが用意されており、そのまんまのエラーがでました。

Error: ./mkxminer: error while loading shared libraries: libOpenCL.so.1: cannot open shared object file: No such file or directory
Reason: You don't have 32bit OpenCL installed. If you added 32 bit support (like written above), you may need to reinstall AMD drivers.
この「libOpenCL.so.1:cannot open shared object file」というメッセージは以前にもよくお目にかかりました。

Synapticを使って32bit版のパッケージを適当に見繕って追加インストールしました。AMDGPU-Proのインストーラーを使っても32bit版のパッケージをインストールできるのですが、ビデオドライバーもインストールされてしまうため、この方法は取れませんでした。(ワタシの環境ではAMDGPU-ProのビデオドライバーをインストールするとFirefoxでもChromeでも描画が乱れてしまうのです)

手動で追加インストールしたパッケージは以下の通りです。
  • libopencl1-amdgpu-pro:i386
  • clinfo-amdgpu-pro:i386
  • libdrm-amdgpu-pro-amdgpu1:i386  
  • libdrm2-amdgpu-pro:i386
  • opencl-amdgpu-pro-icd:i386
 全部が必要であったのかは不明ですが、これでようやくLinxu版のmkxminerが動くようになりました。

さて、mkxminerにはコマンドラインオプションが多数用意されており、そのなかに「--asm」 というものがあります。
--asm - Will enable ASM kernels for supported GPUs (Fiji, Ellesmere, Tonga, Hawaii, Tahiti, Oland currently)
    for about 10% extra speed. Note: this may crash your miner, especially on some Ellesmere cards.
    Recommended 16.10.3 driver or latest AMD / beta blockchain driver.
ワタシが使っているR7 240はOlandなので、この--asmオプションにも対応していると思われるので、さっそく--asmオプションを指定して実行してみました。なんとハッシュレートは3.0MH/sでした。

GPUファンの音が爆音になるのかと思いきや、ほぼ音がしません。後から確認したのですが、ワタシが使っているRadeon R7 240はこんなカードでした。TDPが30Wのためか、気休め程度のファンと幅広なヒートシンクという構成でした。

てっきりこんなカードだったかと勝手に想像していましたが、全然違っていました。

GPUの使用率を確認してみようと思い、別なコンソールを開いてradeontopと打つと、まだインストールされていませんでした。インストールしてたはずと思いつつも、その場でapt install radeontopでインストールしました。


確かにGPUはがんばっているようです。こんなに使用率が高い状態はこれまでに見たことがありませんでした。これを見ると、シェーダーが大忙しのようです。Radeon R7 240にはシェーダーが320基搭載されています。RX 560では1,024基、RX Vega 64では4,096基も搭載されています。パワーが無さすぎですね、R7 240は。

ところで、GPUの温度はどれくらいなのでしょう?道具を持っていないようだったので調べてみると、Psensorというアプリケーションがあるようです。さっそくこれをインストールしてみました。

GUI版のPsensorとCUI版のsensorsという2種類がインストールされます。こちらは調整後?のsensorsの結果です。
$ sensors
amdgpu-pci-0100
Adapter: PCI adapter
temp1:        +62.0°C  (crit = +120.0°C, hyst = +90.0°C)
今は62度ですが、--asmを付けてmkxminerを動かすと70度に張り付いてしまいます。--temp-targetで60度を指定したり、--powertuneで80%を指定したり、--engineでGPUの動作周波数を600MHzとかに指定してみたりしましたが、何も効きませんでした。


最終的には--asmオプションを外し、他のオプションも全く指定しない状態で60度くらいに落ち着いてくれています。その代わり、--asmオプションが外れたためにハッシュレートも3.0MH/sから2.5MH/sまで落ちてしまいました。

[23:32:42 - 0 days 02:58:59] Accepted diff 8 share 01411b57 GPU#0 in 285ms                                            
[23:32:51 - 0 days 02:59:08] Accepted diff 8 share 1b1d30cf GPU#0 in 278ms                                            
[23:33:25 - 0 days 02:59:42] Accepted diff 8 share 05db70c6 GPU#0 in 278ms                                            
[23:35:26 - 0 days 03:01:43] Accepted diff 8 share 1aa86a24 GPU#0 in 279ms                                            
[23:35:47 - 0 days 03:02:04] Can't receive server reply - error 301                                                   
[23:35:47 - 0 days 03:02:04] Disconnecting from stratum                                                               
[23:35:47 - 0 days 03:02:04] Devpool: connection interrupted                                                          
[23:35:47 - 0 days 03:02:04] Devpool: restarting...                                                                   
[23:36:08 - 0 days 03:02:25] Accepted diff 8 share 162be70e GPU#0 in 304ms                                            
[23:36:14 - 0 days 03:02:31] Accepted diff 8 share 128264f8 GPU#0 in 279ms                                            
[23:36:44 - 0 days 03:03:01] Accepted diff 8 share 1261e41c GPU#0 in 283ms                                            
[23:36:54 - 0 days 03:03:10] Accepted diff 8 share 18347d96 GPU#0 in 279ms                                            
[23:37:07 - 0 days 03:03:24] Accepted diff 8 share 1477daa0 GPU#0 in 283ms                                            
[23:37:17 - 0 days 03:03:34] Accepted diff 8 share 1248bcdc GPU#0 in 280ms                                            
[23:37:29 - 0 days 03:03:45] Accepted diff 8 share 0b61d511 GPU#0 in 280ms                                            
> 2.5MH/s | Temp(C):                | | Fan: | HW: 1 | Rej: 0.4%


まあ、70度で連続運転してGPUが故障するよりかは60度くらいで安定稼働してくれた方が余計な出費が発生しなくて良いのではないかと思っています。

しかし、そもそもハッシュレートが2.5MH/sでは進みが遅すぎます。1Monacoin貯まるまでに1ヶ月くらいかかりそうです。1Monacoinが500円弱なので、全然稼いだ気になりませんね。

もっとパワフルなGPUが欲しくなりました。最低でもシェーダー数が1,024基のRadeon RX 560くらいじゃないとスピードアップを感じられない気がします。