時代に追いつくMining Log

マイニングが流行ってから一足遅れて世界に飛び込んだ人の日々の記録と成長を記録していきます

1Uサーバーの購入とbladebit chia plotterの使用方法

初めに

ここ最近いろいろな物を購入してました。すべてはbladebit chia plotterというplotterソフトを使用したいが為です。というのも、現在xeon e5 2620 v2を2基に128GiBRamを載せたPC1台でplotしています。速度は55min/plotなので24plot/dayほどですね。この速度が現状若干足りないんです。ある程度目標としているplot容量や収入量に届くまでに1か月以上かかってしまいそうです。そのため、plotファイルの作成量を増やそうと思いました。その時Twitterでbladebit chia plotterという新しいplotterが出たというツイートを見ました。

github.com

最初のRequirementsに書いてあるのですが、最低条件に416GiBのRAMが必要になります。つまりキリのいい数字にすると512GiBのRAMです。普通のPCでやろうとすると最低でも8スロットDDRに64GiBメモリをすべて刺す事になります。あと、マザーボード側の最大メモリ搭載可能量に引っかからないようにする必要があります。それらを考慮するとサーバー機を1台買って増設した方が安く簡単だという結論に至り今回購入しました。

1Uサーバーとメモリの購入

今回はヤフオクで購入しました。モデルは日立のHA8000/RS210-h HM2です。
f:id:takaindex:20210724025929j:plain
これにCPUがXeon e5 2697 v2が2基と64GB DDR3 RAMが乗っていて、フロントベイには2.5inch SASトレイとMegaRaid 9271-8i、拡張カードにはLANソケットの増設でトータル9portのRJ45ソケットが付いています。今回の用途には若干ポート系がオーバースペックなのですが、非常にバランスがいいスペックだったのでこれにしました。お値段なんと30,000+tax+送料で34,100円でした。お買い得。

到着して通電確認をしたのですが、ラックサーバーの既製品って滅茶苦茶ファンの音がうるさいですね。現在ベッドの横に配線組み換えも想定して置いてあるのですが、流石にうるさくて眠れません。

そして、今回はメモリが512GB必要です。しかしこのマザーボードは異なるメモリを刺すと認識してくれません。なので32GBメモリを追加で16本買い、全部差し替えます。それがこちら。

f:id:takaindex:20210724030013j:plain
DDR3 1600 32GB LRDIMMです。これの購入も流石にヤフオクでした。16本まとめて出品している人はいなかったので、8本ずつ2つの出品から購入しました。お値段なんと合わせて120,000円。本体の4倍の値段がしました。ちなみに、Amazonで新品で揃えようとすると200,000円します。
今回のサーバーは合わせて150,000円となりました。このサーバー、chiaが終わったら一体なにに使用するんだろう。

Ubuntu20.04のインストール

ここで問題が。HBAカードは使用した事があるのですが、Raidカードは今回が初めての使用です。普通にフロントベイに2.5inch ssdを刺したらインストール用に用意したUbuntussdを認識してくれません。
困ったと思って日立にある説明書を読みました。200ページありました。で、読んでみたらまずはRaidカードのWebBIOSに入ってRaidカードにドライブを読み込ませて仮想ボリュームを作成しろと言われました。どうやら1本のssdを単体で認識させるためにもRaid0を1本で組まないといけないらしいです。HBAならそんな面倒なことしなくてもよかったのに。これを解明するのに半日使いました。

仮想ドライブを作って認識させたらあとは通常のUbuntuのインストールと変わりませんでした。ちなみに、インストール時のオンボード出力の画面は4:3の出力だったので画面下が見切れました。設定項目の完了ボタンが一部見切れて押せませんでした。

インストールが終わって起動できたのがこちら。
f:id:takaindex:20210724030017j:plain
しっかり48threadと512GBRAMを認識してくれました。

bladebit chia plotterのインストールと設定

ここからが本題です。今回インストールしたOSはUbuntu20.04ですが、bladebitはどうやらAmazon LinuxCentOSをメインに作っているようで、Ubuntu20.04で稼働させるにはgithubに書いてある事以上にやる手順が多かったです。そこを今回ちょっと書いていこうと思います。
ちなみに、Amazon LinuxCentOSならそこまで手順は必要ないらしいです。

まずは必要なパッケージを色々インストールします。

sudo apt-get install -y libsodium-dev cmake g++ git build-essential libnuma-dev numactl

githubにはcmakeとnumactl-develのみが書かれていますが、実際にUbuntu20.04でインストールとコンパイルを通そうとした際はここら辺のものが全部必要でした。一応詳細はRedditgithubのIssueにあった気がします。

全部インストールをしたらgitでcloneします。

git clone --recursive https://github.com/harold-b/bladebit.git

cloneしたらblsをbuildします。

cd bladebit
./build-bls

その後、bladebitをコンパイルして実行可能ファイルを出力します。

make clean && make -j$(nproc --all)

これで実行可能なbladebitが作成されます。実行ファイルは/bladebit/.bin/release/bladebitのところに作成されてます。

bladebitの実行

とりあえず./bladebit -hでヘルプが出るので読んでみてください。引数としてはmadmaxとほぼ変わりませんが、最終出力のディレクトリの表記方法などがちょっと違います。

基本的な実行コマンドは

./bladebit -w -n * -t * -f * -c * /mnt/plot

こんな感じです。numaについてあまり詳しくないですが、-wの引数を用いるとbladebitが使用する416GiBメモリを切り離して確保した状態で作業が進むっぽいです。他の-n,-t,-f,-cはmadmaxなどと変わらない引数です。末尾に引数なしで保存先ディレクトリを指定します。この際、madmaxは階層指定なのでスラッシュが必要でしたが、bladebitはフォルダ指定なのでスラッシュが必要ありません。実行すると作成が始まります。

実行時の挙動と作成速度について

まずは挙動について。phase3にてどうやら最終ファイルの一部の書き込みを始めるらしいです。そのため、ディスクへの書き込み速度が遅いとphase3から一気に遅くなってしまいます。また、連続作成を行う際はメモリ416GiBだと2個目のphase1の途中で一時的にメモリ不足に陥ります。1個目の完成ファイルが全部最終ディレクトリに書き込み終えると再開する挙動になってます。もしかしたら完成ファイルの出力先はhddに直接書くのではなく、一時的にssdやnvmeなどに書き込み、作成が終わったらhddに別プロセスから動かすようにしたほうが早く処理が出来るかもしれません。もう少し試行錯誤してみます。

そして実際の作成速度です。
phase1:645.22
phase2:75.70
phase3:433.69
phase4:1.57
合わせて1156.18sec(19.26min)でした。ちなみに、全phase CPU使用率が100%に張り付いているため、I/OよりもCPUスペックがボトルネックになってこの時間になっているらしいです。AWSを用いたbladebitの動画を製作者がyoutubeに上げていますが、5~6minで1plotの作成を終えています。使用しているCPUが64Coreのため、そこの差が出ているのでしょう。
実際に連続作成を行うと、書き込みphaseのせいでphase1で一時的に作業がストップしてしまい、1plot作成に29~30minぐらいでした。まあそれでも、1日に48plotは作ってくれるので十分な結果です。
ちなみに、最初ネットワーク共有を行なっているファイルに対して書き込みを行なっていたのですが、1000Mbaseの回線だと書き込み速度が125Mb/sなので追いつきません。結局hddを直接刺してplotファイルで埋め終わったら手動で差し替えてます。今後これも改善していきたいと思ってます。

最後に

bladebit chia plotterはソフト性能的にはmadmaxと多分そんなに大差ないといった感想でした。ただ、全tempファイルをRAMに書き込むためソフト自体がメモリへの読み書きに特化させています。その点で少しソフトとしての性能差は出ていると思います。ただ、読み書き性能がメモリのみに変化しているため、CPUのボトルネックが顕著に出てくる印象です。生成速度の差はほとんどCPU性能に比例して早くなっていきます。まあでも、そもそも普通のマザーボードで512GBメモリを積むことはないのでなんとも言い難いですが。
今後はplot機が2台になったのでplotファイルの受け入れ口を作って自動で割り当てる方法やbladebitのplotファイルの作成高速化などをしていきたいと思っています。毎回hddを差し替えたりするのは面倒なんで、極力自動化して手動でやなけれないけないところは減らしたいので。
一応構想としては、bladebitの高速化は最終出力先をssdにして、それをネットワーク経由で別プロセスを用いてマイニング機に転送します。マイニング機は余っているnvmeを刺して2機からの受け入れ口としてそこのみをファイル共有化、そこから容量の余っているhddに自動で割り当てるようにしたいと思っています。
まだまだ弄れる場所がありそうなので楽しみです。

それではまた。