リモートワークが当たり前の世の中になり、リモートで職場のPCに入って作業することが多くなりました。でも、Linux PCに入ってPython Programを書いてAI開発していると、結構いろいろなハプニングに見舞われます。データセットをメモリーに広げすぎてメモリー不足で落ちてしまったり、トレーニング中に画像データをチェックしすぎてハングアップしてしまったり…
そんなとき
会社にいる人を探してポチッと電源ボタンを押してもらったり、都合をつけて出社したり、そんなことを繰り返しているうちに、スイッチボットを導入してみようかとか、USB Watchdogを購入しようかとか考えていた時のこと。
素直にLinuxのWatchdogを試してみようと思いやってみたところ、いい感じにリブートしてくれるようになったので、その報告。
Watchdogの設定
こちらの記事を参考に設定してみました。
まずハードウェアタイマーが利用できるか確認です。lsmod で iTCO_wdt が見つかればOKです。
次に見るのは、/etc/default/watchdog です。こんな感じになっていればOKです。
$ cat /etc/default/watchdog # Start watchdog at boot time? 0 or 1 run_watchdog=1 # Start wd_keepalive after stopping watchdog? 0 or 1 run_wd_keepalive=1 # Load module before starting watchdog watchdog_module="iTCO_wdt" # Specify additional watchdog options here (see manpage). watchdog_options="-s -v -c /etc/watchdog.conf"
リブートの永久ループを避けたければ “run_watchdog=0” にしたほうがよいでしょう。逆にブート中もチェックしたければ “wd_keepalive=1” にします。
そしてOptionalな設定は /etc/watchdog.conf に書きます。が、あまり触らなくても大丈夫でしょう。ひとつあげるとすれば、 ping 設定は個人的にはおススメです。なんだかよくわからないけどとてつもなく重くなったときや、GUIのみフリーズしてしまったときなどに重宝します。
たったこれだけです。簡単でしょう !?
動作確認
Ping設定していることを前提にします。このとき、
マシンA : Watchdogを仕掛けたマシン
マシンB : Ping先のマシン
とします。手元にマシンA, Bがあるのであればイーサケーブルを抜くだけでマシンAのリブートが確認できるはずですね。
一方、ping設定をしていればリモートでも結構簡単に動作確認ができます。リモートからマシンBのIPアドレスを変えればよいのです。そしてマシンAのリブートが完了するまでにマシンBのIPアドレスを元に戻します。
ここで焦ってはいけないのが、マシンBのIPアドレスを変えたとたんにリモートアクセスが一旦切れることです。なので、変更後のIPアドレスでマシンBにリモートアクセスし直し、IPアドレスを元に戻す必要があります。(するとまたリモートアクセスが切れますので、元のIPアドレスで入りなおします)
面倒ではあるのですが、ここまで確認できれば結構リモートから解決できる幅が広がります。
さまざまな芸当
たとえばGUI系が重くなってしまったためにリモートから操作不能になったけど、カーネルは生きていてpingは打てているなんてときにも、マシンBのIPアドレスを変えることによって、マシンAの強制再起動ができたりするわけです。
あるいはこの場合だとマシンBがお亡くなりになってしまうことが最悪のケースのひとつですが、そんなときマシンAのリブートが完了してからpingエラーで次のリブートが始まってしまうまでの間(1分間の設定)を見計らってマシンAにリモートで入りwatchdogをいったん止めて、ping設定を外してwatchdogを再稼働させるなどの芸当もできるようになります。(この場合マシンBの復帰は実際にボタン操作しないとダメですが、ひとまずマシンAを使える状態までには復帰できるので、仕事的には延命になるわけです)
というわけで
Watchdogを有効活用してみましょう、というお話しでした。簡単かつ便利で、使わない理由がわかりません。マシンBとして安定した(あまり難しい仕事をしない)ものを選べば、堅牢なシステムを作れること間違いなしです。是非トライしてみて下さい !