ccminerは動作しているものの、何も出力しなくなってしまう感じです。
異常終了してくれるなら、ccminerやシステムを再起動したりできるのですが、暴走は見た目上動作しているので、ややこしいです。
以前のバージョンのccminerと動作を比較してみたのですが、私の環境だと、
KlausT-8.21-mod-r11 → load averageが1.0(論理CPUコア1つ分)に収束する。
KlausT-8.21-mod-r13 → load averageが4.0(全論理コア分)まで上昇しCPU負荷が100%になる。
という状況で、これが暴走の理由かはわからないのですが、従来のバージョンよりもCPU負荷が高くなる傾向があるようです。
暴走してしまうと、ccminerを動かしてだけ無駄になるので、とりあえず暴走した際に、ccminerを再起動させるしくみを作ってみました。
具体的には、ccminerの出力が一定期間なかった場合に、システムを再起動させるようにします。
以下のようなシェルスクリプトを用意しました。
#!/bin/sh
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
export PATH
monitor_current='/var/tmp/monaminer_tail_new.txt'
monitor_previous='/var/tmp/monaminer_tail_old.txt'
monitor_difference='/var/tmp/monaminer_tail_diff.txt'
timestamp=`date "+%Y/%m/%d %H:%M:%S"`
log_monaminer="/var/log/monaminer.log"
log="/var/log/monaminer_healthcheck.log"
if [ `whoami` != 'root' ]
then
echo 'This shellscript must be run by user "root".'
exit
fi
if [ -e ${monitor_previous} ]
then
rm ${monitor_previous}
fi
if [ -e ${monitor_current} ]
then
mv ${monitor_current} ${monitor_previous}
fi
tail ${log_monaminer} > ${monitor_current}
diff ${monitor_current} ${monitor_previous} > ${monitor_difference}
if [ ! -s ${monitor_difference} ]
then
echo "[${timestamp}] ccminer may be running away, attempt to reboot system." > ${log}
reboot
fi
「log_monaminer」には、ccminerの出力をリダイレクトしているファイルのパスを設定します。
これをcronで一定期間毎(とりあえず15分に1回程度)に動かすことで、ccminerの出力が前回動作時から変化がなかった場合、システムを再起動させることができます。
これで暫く様子を見たいと思います。
0 件のコメント:
コメントを投稿