ethOS自動再起動・監視作業を効率化1|YUJI HOSAKA BLOG
- 2017/12/14
- マイニング

マイニングしていると数日、数時間に何度かGPUがとまってしてしまったことはないでしょうか?
外出中に再起動かけるのも大変なので、GPUが止まってしまったときに自動で再起動かける
方法はないものかと調べましたが、自分でどうにかしたほうがよさそうだったので
私のおこなった方法を紹介させていただきます。
1.GPUがとまっていることをどうやって判断するか。
2.自動でどのように再起動かけるか。
というところがポイントになってくるのかとおもいます。
【用意するファイル】
下記の3つのファイルを用意します。ファイル名はなんでもよいのですがここでは下記のファイル名にしました。
保管場所は/home/ethosに置いておきます。
gpus.txt ←RIGに取り付けているGPUの数を入力するファイル
stats_data.txt←稼働中のGPUを判断するためのデータを入力するファイル
rig_reboot.sh←RIGの状態を監視し、再起動するためのファイル
【権限変更】
これら3つのファイルを作成したら作業しやすいように権限を変更しておきます。
Shell上で下記の内容を1行ずつ入力し実行します。
$chmod 755 gpus.txt
$chmod 755 stats_data.txt
$chmod 755 rig_reboot.sh
【ファイルを開いて書き込む】
1.gpus.txtをファイルを開いて取り付けているGPUの数だけを記入し保存します

設置したGPUの数を入力
2・ここまで準備ができたらいよいよ監視用のコマンドをrig_reboot.shに入力していきます。
入力する内容は下記のとおりです。
#!/bin/bash
#—初期値設定—————–
loop=1;
wait_time=90s;
interval=60s;
list=();
count=();
alive_gpus=();
set_gpus=();
#—————————–
#—起動後90秒後から監視開始——————————————————
for i in $loop
do
sleep $wait_time
done
#———————————————————————————–
#—60秒ごとにGPUチェック——————————————————–
while:
do
sleep $interval
#———————————————————————————–
#—何を監視の基準にするかで変更します ——————————————–
#—ここではfanrpmの値を監視対象とします—————————————–
#—fanrpm値が格納されているstats.fileの値をstats_data.txtにコピー————-
sed -n ‘/fanrpm:/p’ /run/ethos/stats.file > stats_data.txt
#—stata_data.txt内のデータを整形する——————————————–
sed -e ‘s/fanrpm://’stats_data.txt
IFS=$’\n’
#—stats_data.txtの値の数をカウント———————————————
list=”$(<stats_data.txt)”
count=`echo $list | wc -w`
#—カウントした値をalive_gpusに挿入——————————————–
alive_gpus=$(($count))
#—RGIに接続しているGPU台数を抽出———————————————
set_gpus=”$(<gpus.txt)”
#—alive_gpusとset_gpusを比較————————————————-
if [ $alive_gpus = $set_gpus ]; then
#—GPU台数に相違なければコメントを書き出す————————————
echo “GPUs GOOD!”
:
else
#—GPU台数に相違あれば再起動する———————————————–
r
fi
done
以上が、rig_reboot.shに書き込む内容です。
【自動起動させる】
custum.shが起動時に実行されるコマンドのようなのでここにrig_reboot.shを追加する

ethOS自動再起動してもらうため先ほど作ったrig_reboot.shが動くように1行追加する
あとは、再起動して自動監視してもらうだけです。
必ずしもこの設定がベストとは言えませんが、とりあえずはfanrpmの数と設置したGPUの数を
比較して相違が出た時に再起動となるようにしてみました。
うまく動かない場合もあると思いますので、改良していければと思っています。
・
・
・
・
・
※上記はRIG内の情報を元に自動再起動する仕組みを考えてみましたが…
微妙にうまく動かないときがあるのでjsonを使った方がよいようにも思いました。
ということで、スクリプトの一部を記しておきますね。
その前に、jsonを使うときにjpコマンドが使えた方がいいので下記のコマンドでインストールしておきます。
$sudo curl -o /usr/local/bin/jq -L https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64 && sudo chmod +x /usr/local/bin/jq
そして、最初の方で書いていた
#—何を監視の基準にするかで変更します ——————————————–
この内容周辺のプログラムを下記の内容に変更して、ごねごねしたら何かできそうです。
#jsonデータを抽出******は自分のを入力
jsondata=”http://******.ethosdistro.com/?json=yes”
curl -s $jsondata
#jsonデータをパース
JSON_RESPONSE=$(curl -s $jsondata)
#とりあえずデータを出力してみる
echo $JSON_RESPNSE | jq -r ‘.’