時代に追いつくMining Log

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

Ubuntu版madMAxのインストールと実行、実証結果と考察

初めに

最近Twitterで爆速でplotファイルを作成できるmadMAxというplotterが非公式でリリースされたという噂を聞いて調べてみました。今回はそれに関して記事にしていこうと思います。

madMAxとはなんなのか

全phaseで全thread使用を可能にしたらしいです。それなら確かにphase2~4の時間が短縮できるといった訳です。自分はまだmadMAxが言っている理論速度まで届いていないので未だに調整を繰り返している段階ですが、それでも公式plotterよりも遥かに早い速度でplotファイルを作り続けてくれています。ただそれに伴い要求スペックがいい感じに高くなっているのでそこに関しては機材発注をかけようと思っています。

まずはgit clone

今回のお題のmadMAxのgithubはこちら
github.com
まずはインストールと実行に必要なライブラリのインストールから

sudo apt install -y libsodium-dev cmake g++ git

libsodium-devは暗号化用のライブラリ、cmake,g++はC++コンパイル関係に必要なソフト、gitはネットからソースコードを取ってくるのに必要なソフトです。
とりあえずこいつらをインストールしたらgitでmadMAxを取ってきます。

git clone https://github.com/madMAx43v3r/chia-plotter.git 
cd chia-plotter

chia-plotterというディレクトリが作られ、その中にmadMAx製plotterのソースコードがgitされます。
そしたら、コンパイルを通して実行可能状態にします。

git submodule update --init
./make_devel.sh

これでchia-plotterは実行可能になります。実行ファイルは./build/の中にchia_plotという名前で入っています。こいつに対して引数をくっつけてplotファイルを作って貰います。

とりあえずhelpをみて引数について考える

./build/chia_plot —help

これでhelpが実行されます。実行内容は以下のような感じ。

For <poolkey> and <farmerkey> see output of `chia keys show`.
<tmpdir> needs about 220 GiB space, it will handle about 25% of all writes. (Examples: './', '/mnt/tmp/')
<tmpdir2> needs about 110 GiB space and ideally is a RAM drive, it will handle about 75% of all writes.
Combined (tmpdir + tmpdir2) peak disk usage is less than 256 GiB.
In case of <count> != 1, you may press Ctrl-C for graceful termination after current plot is finished.

Usage:
  chia_plot [OPTION...]

  -n, --count arg      Number of plots to create (default = 1, -1 = infinite)
  -r, --threads arg    Number of threads (default = 4)
  -u, --buckets arg    Number of buckets (default = 256)
  -t, --tmpdir arg     Temporary directory, needs ~220 GiB (default = $PWD)
  -2, --tmpdir2 arg    Temporary directory 2, needs ~110 GiB [RAM] (default = <tmpdir>)
  -d, --finaldir arg   Final directory (default = <tmpdir>)
  -p, --poolkey arg    Pool Public Key (48 bytes)
  -f, --farmerkey arg  Farmer Public Key (48 bytes)
      --help           Print help

基本的に引数に関しては公式chia plotterと似たような項目が設定項目にあります。ただ、ちょっと違うのはtmpdir2に関する扱いです。plot作成におけるtempファイルは2箇所に分かれるのですが、madMAxがいうには25%はtemp1に保存し、75%はtemp2の方に保存して処理を行うらしいです。多分内部的には演算中の項目を毎回temp2の方にコピーをして処理が終わったらtemp1に戻して上書きをする感じなのでしょう。なので、今回madMAxではtemp2のRead/Write速度が求められます。madMAxは40分で1plot作成が可能だと言っていましたが、これはtemp2をtmpfsという物を使ってRAMメモリを一時的に物理記録ドライブのように使用する方法を用いています。そりゃPCIポートでの長期保存を前提としているnvmeよりも演算目的の一時ファイルの役割をしているRAMを使用した方がRead/Writeは早いわな。
ただこれ、tmpfsをtemp2に使用する場合、メモリ容量は最低でも128GBが必要になります。temp2は110GiB(=118.1GB)を必要とするため、それ以上の物理メモリを用意することになります。実際のところはplotterやOS、その他演算やCPU処理を行う領域も必要なため、デュアルCPUの場合128GBメモリでは若干足りないという記事も見かけました。これに関してはECCメモリを発注して届いたら実際に試してみる予定です。

引数設定に必要な項目を用意する

引数にpoolkeyとfarmerkeyが必要です。これに関しては、helpにも書いてあるのですが、chia keys showのコマンドで見ることができます。他にもSwar-Chia-Plot-Managerを使用している場合はLogファイルの上の方に入っています。ちょっと長めの文字列ですね。こいつらはcommandでplotファイルを作成する際は大体必要になるので、plot機のどこかに別途保存をしておくと楽かもです。

実際にplotファイルを作成してみる

実際にplotファイルを作成する際のコマンドは以下のようになります。

./build/chia_plot -n 1 -r 12 -u 128 -t /media/volume/1tb/ -2 /media/nvme/madmax/ -d /media/plot2/ -p *** -f ***

poolkeyとfarmerkeyは各自の物を入れてください。
自分は、mediaディレクトリの中に色々外部ディレクトリをマウントしています。
temp1は1tb HDDで、temp2は1tb nvme、final dirはWindows側の4tb HDDをマウントしてます。今回はそれらをターゲットとしてコマンドを走らせました。

  • nの引数は1で1個plotファイルを作成したら終了します。容量が埋まるまで無限に走って貰いたい場合は-1を指定すると無限に走ります。

plotファイルを作ってみた時のCPU使用率と速度に関して

2つデータを取ってみました。1つ目はtemp1とtemp2を同一のnvme内で指定した場合、2つ目はtemp1がhdd/temp2はnvmeを指定した場合です。
1つ目のログファイルを無くしてしましまったので正確な時間は出てこないのですが、同一にした場合は20000sec、別々にした場合は9803.6secでした。
内訳は以下のようです。
phase1:3053.88sec
phase2:3182.4sec
phase3:3449.68sec
phase4:117.659sec
2.7時間程度で1plotを作成する事ができました。また、全phase定期的にCPU使用率は全Thread100%に張り付くタイミングがありました。しっかり全部使って回っているらしいです。
この速度なら1日で8plotちょい作る事ができる速度です。公式plotterで並列処理をさせても1機で1日3~4plotが平均だったので倍ぐらいの速度でplotファイルを作成出来ています。ただこの速度だと5日で4tbHDDが埋まってしまうので投資量が凄い事になりそうです。

ただ、色々調べていると実際にはまだまだ早く出来るらしいです。madMAx製作者はtemp1をSSD*3 raid0でtemp2を110GiBRAMを使用して40分弱での作成が可能だったらしいです。他にもtemp1をssdでtemp2をnvmeにした場合は87分程度で終了したという情報もあります。まだまだ処理や性能を詰める余裕がありそうです。結局は記録デバイスへのRead/Write速度がボトルネックになっているっぽいですね。ただ公式plotterよりも断然速度が速くなっているので試す価値はかなりありそうです。

今後どうするか

とりあえずmadMAx製作者が試した環境が偶然にも昔作ったPCにかなり近いです。その子はXeon E5-2620v4を2つ積んでいます。製作者の方はXeon E5-2640v2を2つなので自分のより少しスペックが高いですが、スペック帯はXeonの中では同じぐらいです。だたRAMが圧倒的に少ないため、そこの部分を買い足して試してみたいと思います。こいつ、マザーボードをz10pe-d16 wsという型番を使っているのですが、ECCメモリしか認識せず癖が強いんですよね。ワークステーション系だから起動にも時間がかかるし、若干使い道に困っていた子です。たまに機械学習を専攻している知り合いにマイニング時代に使っていたGPUを刺して貸していました。最近は使っていないみたいなのでここらでちょっと酷使して貰おうと思います。排熱系統は機械学習の演算を想定してある程度しっかりと作っていたのでよかったです。
とりあえずAmazonECCメモリ128GB分の発注からかなぁ。SSDは用意してあるのでメモリだけなのですが、いかんせん値段が高くて。発注して届けば実際に組んでUbuntuインストールからやらないと。追加で色々金額がかかりそうですが、非常に面白そうなので全力でやってみたいと思います。公式poolとportable plotが出たらそちらに移行しようと思っていますが、それまではmadMAxとXeonで遊んでいこうと思います。

それではまた。