Chia Plotを効率よく作成するには

前回は途中結果をお伝えしましたが、一通り結果が出たので記載します。

種類 完成までの時間 メモ
NVME SSD
(i7-6700K RAM16GB)
5:02 8スレRAM16GB
SATA SSD
(i7-7700K RAM32GB)
4:50 8スレRAM32GB
6:39 2スレRAM4GB
SATA HDD
(i7-7700K RAM32GB)
13:05 2スレRAM4GB
USB HDD
(Ryzen7-3800X RAM64GB)
36:24 8スレRAM16GB

まず、USB HDDに直接プロットする方法ですが、36時間と途方も無い時間がかかってしまいました。タスクマネージャーを見てみると、平均応答時間が、遅いときで1~2秒もあります。これは遅いわけだ。

これはもしかしてPCが悪いのかな?と別のPCに接続して試しました。↑のHDDはSeagateの8TBです。

こっちはSeagateの6TB、フォーマットしたてのまっさらなやつにもかかわらず、平均応答時間が3409ミリ秒?ヤバすぎだろ…つまり、PCがわるいわけではなく、USB HDDに直接プロットするのは現実的ではないということでしょう。

(2021/04/28追記)
遅い理由はHDDがSMRだからである可能性が高まりました。CMRの外付けHDDにプロットを試していますので、結果が出次第また記事にします。
(追記ここまで)

では、SATA接続HDDならどうかというと、13:05でプロットが作成できました。ただし、SSDと並列でプロットしたもので、設定は2スレRAM4GBだったので、単体でプロットするよりは遅くはなっていると思われます。次は8スレRAM8GBの設定で試していますがまだ完了していませんので結果は次の記事にでも。

また、ファイルの整理を行い、SATA SSDの空き容量を増やすことに成功しましたので、SATA SSDに対しての並列プロットも試してみました。SSDの場合は332GiB(356.5GB)の空き容量が必要です。手持ちのSSDはCrucial MX500 1TBなので、2つまでしか同時に作成できません。

2つ同時にプロット作成したところでSSD使用率は100%にはなりません。2TB SSDあたりで4つくらい同時にやらせるのがちょうどいいのかも。

2つ同時にした場合は2スレRAM4GBで6:38程度でした。単品だと5時間切っている感じでしたが、そちらは8スレRAM16GBとかフルで割り当てていましたから単純に比べることはできませんが、今の時点でも単体でやるより効率は良いですね。今は4スレRAM8GBにしてプロット中です。

ちなみにTwitterではSATA HDD8時間でプロットできたという情報もいただきました。そんな速度がでるのであれば、寿命を削ってSSDにプロットするよりも複数のSATA HDDに並列プロットしたほうがSSDの寿命を考えなくていいし良いのではないかとは思うのですが、手持ちにSATA HDDが1台しかないんですよねぇ。Seagateの外付けHDDはバラすと二度と元に戻せないタイプなのでやりたくないですし。試せない…

だれかB365 D32-D4魔固版買って試してみてください!

こんなのに3,299人民元(約5万5,000円)だすならHBAカードの中古でも買ったほうが遥かに良いとおもうけど、こういう変態マザーはロマンですねえ。触ってみたい。

CLIでプロットする

GUIでやるんでもいいんですけど、パーセンテージが見れる程度だし、コマンドプロンプトでサクッとやれるようにしたほうが楽でしょ。ってことでコマンドとかオプションとか調べました。

といってもここに全部書いてありますので、詳しくは見ていただくとして、簡単なのだけ書いておきます。

コマンドプロンプト立ち上げてchia.exeがあるディレクトリに移動しましょう。例えばVer1.1.1の場合は次の場所にあります。
~\AppData\Local\chia-blockchain\app-1.1.1\resources\app.asar.unpacked\daemon\chia.exe

自分の場合下記コマンドを打ち込みます。
cd C:\Users\hyperbanana\AppData\Local\chia-blockchain\app-1.1.2\resources\app.asar.unpacked\daemon

そしてプロット作成コマンドを打ち込みます。例えばこんな感じ。
chia plots create -k 32 -b 4608 -r 2 -u 128 -t D:\chiaTemp -d G:\chiaPlots -n 10

オプションを軽く解説すると、
-k プロットサイズ、最低32以上
-b メモリバッファサイズ(単位はMiB)デフォルトは4608(4.6GiB)
-r スレッド数、通常は2が最適です。マルチスレッドが有効なのはフェーズ1のみ
-u バケット数、多いほど必要RAMが少なくなるがディスクへのランダムシークが増えるらしいけど128が最適らしい
-t tmp dir 一時ディレクトリ。フェーズ1と2がここで行われる
-2 tmp dir 2 セカンダリ一時ディレクトリ。設定した場合フェーズ3と4がここで行われる
-d final dir プロット出力先
-e このフラグをたてるとビットフィールドプロットが無効になる。そうするとRAM使用量は減るが書き込みデータ量が12%ほど増えるのでSSDの寿命が減る…
-n プロット数、final dirに移動したあと次のプロットが始まる

他にもファーマー公開鍵を指定する-f、プール公開鍵-p、フィンガープリントの-aなんかもあるみたいですが、GUIで最初にパスフレーズちゃんと入れていれば特に指定しなくても大丈夫です。ちなみに自分の鍵を確認するコマンドはchia keys show

マルチスレッドが有効なのはフェーズ1のみだから2スレでいいとか書いてありましたが、フェーズ1すごい時間かかるから遊んでるCoreがあるならスレッド数増やしてもいいと思うんだ。

並列にプロットする方法はコマンドプロンプトを複数立ち上げてそれぞれプロット作成コマンド入れればオッケーですよ。

GUIと違ってパーセンテージ見えなくなりますが、CLIでちゃんと進行が見えますし、今がどのフェーズかもわかるのでだいたいの進捗はわかるから特に問題ないかと思います。もちろんGUIでやってもいいと思います。バッチファイル作って簡単に実行できるCLIのが好きです。

現状は

プロット31枚で2ヶ月で勝てる見込み。Total Network Spaceは約100PiB増加。きっついねー。単位がEiBになる日も近い。

儲かる見込みほぼ無いけど、楽しいからもうちょっとだけ続けるつもり。