時代に追いつくMining Log

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

Swarの導入と設定、温度管理と今後の課題

Swarの導入

結局OSを色々往復した結果、plot機はUbuntu20.04に落ち着きました。今のところはですが。んで、何を使ってplotファイルを作成しようかという話。plot作成自体はchiaの公式ソフトをしようしているのですが、並列作成の管理をするソフトです。現状有名になって情報が揃っている物はSwar-Chia-Plot-Managerとplotmanという2つっぽいです。各々良い点はあります。plotmanは非常に細かく現状を把握でき、plot作成時のデータを解析に回せやすいように出力してくれているらしいです。Swarの方はWindows/Mac/Linuxでのクロスプラットフォームに対応しており、config.yamlが共通で使えます。そのため、plot機を複数用意する場合は導入手順が共通のため慣れにより高速化することが出来ます。また、plotの進行度の表示はかなりコンパクトにまとめられている為ssh経由で複数管理する場合かなり見やすくなると思います。それぞれ良い点はありますね。今回はSwarの導入をしてみました。状況次第でもう一台plot機を作成した場合はplotmanを入れてみようとは思っています。解析が楽しそうなので。

今回の導入において参考にしたサイトが複数あったので、そちらを下に貼っておきます。

こちらは導入の手順
hyperbanana.net

こちらは大まかなconfig.yamlの内容確認
hyperbanana.net

そして内容の細かな確認用に見たサイト
github.com

最後のは公式のgithubですね。結局最後には公式documentに落ち着くと。ただ、細かな英語が怪しかったので大まかに設定を把握できたのは助かりました。今回導入の手順に関しては上記サイトがかなり細かく書かれているので省略しようと思います。自分は追加で行った設定項目や、それ以外に追加でインストールしたソフトに関して書いていこうと思います。

Swarのconfig.yamlに関して

chia_location

これの場所なんですが、Ubuntuに関してchiaを導入する際はgithubをcloneするはずです。cloneした際、cloneコマンドを打ったディレクトリにchia-blockchainが生成されます。その下の/chia-blockchain/venv/bin/chiaにあります。plotする際のソフトウェアがこれですね。管理系ソフトはこいつをバックグラウンドプロセスで走らせるように作ってあります。

manager:check_interval

新しいplot作成を開始する前に待機する時間ですね。自分は処理が止まっているかどうかを頻繁に確認したいのでここを20秒に変えましたが、特に変えなくても問題ないです。

view:check_interval

Swarというソフトは、python manager.py viewでplotの進行状況を確認できますが、これが何をしているのかというと、Swarが作成したlogファイルを定期的にconsoleに出力している作りになっています。このログファイルの作成とconsoleの更新をどの頻度で行うかという設定です。標準は60秒で、60秒でも特に問題はないのですが、自分はlogファイルはかなり細かく確認するタイプなので20秒に変更しました。

global:maz_concurrent,global:minimum_minutes_between_jobs

自分はここの項目はmax_concurrentを5,minimum_minutes_between_jobsを5にしています。同時並行の処理の上限値の設定なので、特に設定をしておく必要はないのですが、現状1TBNVmeを使用しているため、tempファイルが200GB*5で容量がいっぱいになってしまいます。それの対策をするためにこの数字で上限をかけています。
一時ファイルは200~250GBまで一時的に膨れ上がります。今後実測値での最大値を把握しておきたいと思います。

jobs:memory_buffer,threads

使用するメモリとスレッド数の指定項目ですね。これはjobの項目ごとに管理されているので、threadに関してはjob間の合計数が上限を超えていても問題ないのですが、memory_bufferに関してはjob間合計値が最大容量を超えた場合bad_allocationを吐く可能性があります。一応気を付けて設定した方がよさそうです。

jobs:enable_cpu_affinity,cpu_affinity

ここの項目は手動で使用するcpuのスレッドを指定する項目です。自分は事前にOSやその他ソフトでのcpu使用率を調べた結果、0threadの使用率がちょっと高めだったので、1~10番目のthreadを手動で割り当てています。もしchiaに自動で割り当てて貰いたい場合はenable_cpu_affinityをfalseにしておくと自動で指定してくれます。


自分が追加で設定した項目はこの辺りでした。もちろんtempDirectoryやfinalDirectoryは設定しました。他の項目はかなり色々な記事にまとまっているため、そちらを参考にしていただければ。

温度管理とCPU使用率、メモリ使用率の監視

Windowsならタスクマネージャーなどで使用率を監視しますが、Linuxだとそうはいきません。一応システムモニターというソフトが標準で入っていて、こいつを使えば見れなくはないのですが、ちょっと見ずらいんですよね。なので、追加でソフトを何個か入れました。

xsensors

まずは温度管理のソフト。GUIで見やすくコンパクトにまとまっているソフトです。インストールから。

sudo apt install xsensors

これをインストールするとこのソフトのベースとなっているCUIで確認できるsensorsというソフトもインストールされます。どちらか見やすい方を使ってください。そしてら起動します。
GUIの起動

xsensors

CUIの起動

sensors

GUIは起動すると以下のようなWindowで情報を確認できます。
f:id:takaindex:20210604175336p:plain
ここでちょっとあれなのですが、Ryzen系列のCPUのCore温度はk10tempという表記で表示されます。
Windows用ソフトCoreTempほどいろいろな情報がみれるという訳ではないですが、非常にコンパクトなサイズで確認できるので、画面上で邪魔にならずに確認できます。

topコマンド

CUIによるプロセスごとのCPU使用率を確認できるパッケージです。Terminalでtopと打つとプロセス一覧と大まかなCPUやメモリー状態が表示されます。Coreごとに監視したい場合はtopを押した後に1を押してください。そうすればCoreごとの表示に切り替わります。これによりchiaが実際どれぐらいのcpuを使用しているか、止まっている際はこちらからでも把握することが出来ます。
topコマンド
f:id:takaindex:20210604225535p:plain
Swarでのview
f:id:takaindex:20210604225546p:plain

また、ここにおけるpidという項目はplotファイルの作成をしているchiaプログラムのプロセスIDとなっているので一致しています。そのため、どのフェーズでCPUを食っているかというのをこのpidを比較しながら把握することが出来ます。

今後の課題

温度を監視していると、nvmeが75度を往復していました。そして転送速度が150MB/s前後まで落ちていました。色々記事を探していると、50度後半あたりからnvmeにはサーマルスロットリングが発動するらしいです。サーマルスロットリングとは、高負荷により温度が一定以上になってしまった場合にCPUやnvmeにおいて発動する機能で、転送速度やCore周波数を制限する機能です。オーバーヒートによる故障を防ぐ安全装置みたいなものですね。自分は未だにヒートシンクを買いに行く時間が無くて、裸運用をしています。そのため温度を逃がす部分がないのでしょう。そのため早急にヒートシンクを買おうと思います。
また、それによりplot作成が遅れています。早く2tb分のplotを作ってhpoolにいれたいなぁ。

それではまた。