2018年9月18日火曜日

KlausT-8.21-mod-r13の暴走対策

先日更新したKlausT-8.21-mod-r13ですが、確かにハッシュレートは高いのですが、私の環境ではちょくちょく暴走します。
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 件のコメント:

コメントを投稿