MacOSとubuntuでSwar Chia Plot Managerを導入する

昨日書いたSwar Chia Plot ManagerのネタはWindows10向けでした。

うちにはMacBookPro2016とubuntuがPlotterとして働いているのでこいつらにも入れたので備忘録として残します。

macOS Catalina (10.15.7)

MacBookPro2016はこわれかけで放置されていたので、OSも特に上げていませんが、多分最新のBigSurでも同じだと思います。たぶん。

Swar-Chia-Plot-Managerからファイルをダウンロードし、userのホームディレクトリに入れておきました。

python.orgからMacOS用をダウンロードしてきました。2つあったけど、どっちでも良いと思う。アップルシリコンネイティブ対応してる方を選んでみた。

Windowsと違って環境変数PATHうんぬんの選択肢もなく、普通にインストールして普通に終わりました。

ここまでやってリモートデスクトップによる設定が非常にめんどくさくなり、SSHでの操作に切り替えます。やり方は「システム環境設定」→「共有」→「リモートログイン」をオンにすればOK

続きはTeraTermでやります。

カレントディレクトリ移動
cd ~/Swar-Chia-Plot-Manager-main

仮想環境の構築。pythonコマンドは通りませんでした。
python3 -m venv venv

有効にする。公式のExample Mac OSのところはちょっと意味不明。
source ./venv/bin/activate

諸々インストール
pip install -r requirements.txt

コンフィグの作成
cp config.yaml.default config.yaml

コンフィグの修正
vi config.yaml

うちのMacBookProは1台のHDDでのみPlottingしています。おまけみたいなもんですが、変更した部分を以下に乗せておきます。

chia_location: /Applications/Chia.app/Contents/Resources/app.asar.unpacked/daemon/chia

log:
  folder_path: /Users/hyperbanana/ChiaLogs

global:
  max_concurrent: 1
  max_for_phase_1: 1
  minimum_minutes_between_jobs: 0

jobs:
  - name: HUS724020ALE640
    max_plots: 999
    farmer_public_key: b6dd7578d10905d(中略)5ee370e4698b0e6582bf
    pool_public_key: 852d2d1c7524fb356(中略)615a59b09249972e8b29
    temporary_directory: /Volumes/HUS724020ALE640/chiaTemp
    temporary2_directory:
    destination_directory: /Volumes/home/ChiaPlotsMac
    size: 32
    bitfield: true
    threads: 4
    buckets: 128
    memory_buffer: 4000
    max_concurrent: 1
    max_concurrent_with_start_early: 1
    initial_delay_minutes: 0
    stagger_minutes: 60
    max_for_phase_1: 2
    concurrency_start_early_phase: 4
    concurrency_start_early_phase_delay: 0
    temporary2_destination_sync: false
    exclude_final_directory: true
    skip_full_destinations: false
    unix_process_priority: 10
    enable_cpu_affinity: false
    cpu_affinity: [ 0, 1, 2, 3, 4, 5 ]

ポイントはfarmer_public_key:pool_public_key:を明示的に記載していること。これをしないとkeychainのpasswordが無いとかってエラーがでてplotting始まりませんでした。

また、宛先がネットワークドライブでもskip_full_destinations: trueにしても多分オッケーでした。ダメなのはWindowsだけだった。

ちゃんと保存先のディレクトリもviewに表示されています。

あとはWindowsの時と同じように
python manager.py start
python manager.py view
でOK

ubuntu 20.04 LTS

めんどくさいのでこいつも最初からSSHで作業します。

ubuntuには最初からpython3が入っているようで、python3 -Vコマンドで調べたところPython 3.8.5がインストールされていました。Swar Chia Plot ManagerはPython 3.7以上あればオッケーなのでそのまま行きます。

まずはSwar Chia Plot Managerをダウンロードしましょう。git cloneコマンドで一発です。
git clone https://github.com/swar/Swar-Chia-Plot-Manager

venvコマンドだけはpython3コマンドじゃないとダメです。
python3 -m venv venv

. ./venv/bin/activate

以降はMacOSと一緒です。諸々インストール
pip install -r requirements.txt

コンフィグの作成
cp config.yaml.default config.yaml

コンフィグの修正
vi config.yaml

ubuntuはviの挙動がおかしいのでユーザーホームディレクトリに.vimrcファイルを作って下記3行ほど記述しておきます。

set nocompatible
set number
set backspace=indent,eol,start

configはこんな感じになりました。HDD2台をつなげて2並列plottingしています。

chia_location: /home/hyperbanana/chia-blockchain/venv/bin/chia

log:
  folder_path: /home/hyperbanana/ChiaLogs

global:
  max_concurrent: 2
  max_for_phase_1: 2
  minimum_minutes_between_jobs: 5

jobs:
  - name: ST2000NM0011_300
    max_plots: 999
    farmer_public_key:
    pool_public_key:
    temporary_directory: /media/hyperbanana/ST2000NM0011_300/chiaTemp
    temporary2_directory:
    destination_directory: /home/hyperbanana/nas/ChiaPlotsUbuntu
    size: 32
    bitfield: true
    threads: 8
    buckets: 128
    memory_buffer: 3390
    max_concurrent: 1
    max_concurrent_with_start_early: 1
    initial_delay_minutes: 0
    stagger_minutes: 60
    max_for_phase_1: 2
    concurrency_start_early_phase: 4
    concurrency_start_early_phase_delay: 0
    temporary2_destination_sync: false
    exclude_final_directory: ture
    skip_full_destinations: true
    unix_process_priority: 10
    enable_cpu_affinity: false
    cpu_affinity: [ 0, 1, 2, 3, 4, 5 ]


  - name: ST2000NM0011_600
    max_plots: 999
    farmer_public_key:
    pool_public_key:
    temporary_directory: /media/hyperbanana/ST2000NM0011_600/chiaTemp
    temporary2_directory:
    destination_directory: /home/hyperbanana/nas/ChiaPlotsUbuntu
    size: 32
    bitfield: true
    threads: 8
    buckets: 128
    memory_buffer: 3390
    max_concurrent: 1
    max_concurrent_with_start_early: 1
    initial_delay_minutes: 0
    stagger_minutes: 60
    max_for_phase_1: 2
    concurrency_start_early_phase: 4
    concurrency_start_early_phase_delay: 0
    temporary2_destination_sync: false
    exclude_final_directory: ture
    skip_full_destinations: true
    unix_process_priority: 10
    enable_cpu_affinity: false
    cpu_affinity: [ 0, 1, 2, 3, 4, 5 ]

あとはいつもどおり
python manager.py start
python manager.py view
でOK

所感

ubuntu も macOSも、SSH接続でviewを見てても次のジョブがちゃんと始まってくれます!!!!Windows10はそれが出来ません!!!

こうやってちっさい画面並べとくだけでいいし。多分Linux版が完全版なんでしょうね。Windows10はネットワークドライブまわりにバグがあったり、SSH接続で運用ができなかったりと問題がちらほら。もう全部ubuntuにしたい!!!!!

(おまけ)ubuntuでXFSにフォーマットしてみる

LinuxはEXT4よりもXFSフォーマットの方がPlottingが早いという話をちらほら聞いていますが、ubuntuはデフォルトではXFSにフォーマット出来ませんので後回しにしていました。せかっくなのでSwar入れたついでにやってみました。

まず、XFS関連のパッケージをインストール。ST2000NM0011_600というHDDを一旦アンマウントし、XFSでフォーマット、EXT4でマウントしていた時と同じ場所にマウントする。ついでにオーナーとグループ権限をrootから一般ユーザーに書き換えして終わり。

sudo apt update
sudo apt install xfsprogs
sudo umount /dev/sdb1
sudo mkfs.xfs -f /dev/sdb1
sudo mkdir /media/hyperbanana/ST2000NM0011_600
sudo mount -t xfs /dev/sdb1 /media/hyperbanana/ST2000NM0011_600
sudo chown hyperbanana:hyperbanana /media/hyperbanana/ST2000NM0011_600

config.yamlの設定をそのまま維持したかったのでこうしました。もう片方のディスクST2000NM0011_300はEXT4のままにして比べてみようと思います。

(翌朝追記)
xfsにしたらめちゃくちゃ早くなりました。

HDD FORMAT TIME
ST20000NM0011 EXT4 10:48:19 (38898.617sec)
ST20000NM0011 XFS 9:34:13 (34452.989sec)

これはいい。EXT4のままにしていたHDDもXFSにしちゃおう。

対象のHDDのデバイス番号を取得する
cat /etc/mtab
どうやら/dev/sdc1らしい。

まずはアンマウントから。
sudo umount /dev/sdc1

したら、busyとかいわれた。

umount: /media/hyperbanana/ST2000NM0011_300: target is busy.

なんのプロセスが走っているのか確認。
fuser -mv /media/hyperbanana/ST2000NM0011_300/

/media/hyperbanana/ST2000NM0011_300:
root kernel mount /media/hyperbanana/ST2000NM0011_300
hyperbanana 13223 ..c.. bash

殺す。
kill 13223

あとは同じようにやっておきました。

sudo umount /dev/sdc1
sudo mkfs.xfs -f /dev/sdc1
sudo mkdir /media/hyperbanana/ST2000NM0011_300
sudo mount -t xfs /dev/sdc1 /media/hyperbanana/ST2000NM0011_300
sudo chown hyperbanana:hyperbanana /media/hyperbanana/ST2000NM0011_300

今日のチア農場

いつもの。
plot1041→1072(+31)
0.77185705 XCH (+0.05377488 XCH)
約$594