LoginSignup
1
0

ラズパイのプロセス監視を slee-Pi3 のウォッチドッグタイマで【OOM 状態からの即時復帰編】

Last updated at Posted at 2021-04-08

今回は slee-Pi3 のウォッチドッグタイマでプロセス監視を行います。
本製品のメリット 自動ハードウェアリセット ができる機能を活用します。
ハード異常でも slee-Pi3 ならクリーンな状態で復帰できます。
ソフトウェアウォッチドッグタイマではどうしようもない時に有用です。

[関連ブログ]

slee-Pi3 のウォッチドッグタイマを利用したプロセス監視シリーズ
【OOM 状態からの即時復帰】← 本ブログ
正常動作検知による監視
異常動作検知による監視
異常動作検知-実装編

[目的と方法]

目的:異常事態からの即時復帰
方法:slee-Pi3 のウォッチドッグタイマがハートビート信号を監視する仕組みを利用
意図的に OOM(Out Of Memory) を起こしてプロセス監視機能によるハードウェア再起動を再現する

[環境]

・ラズベリーパイ 3B
・Raspberry Pi OS Lite Legacy (Buster)
・slee-Pi3

[事前準備]slee-Pi3 セットアップ

slee-Pi3 のセットアップ時に sleepi3-utils を必ずインストールしてください。
セットアップ詳細はこちら

[手順1]service ファイルの中身確認

プロセスが kill されやすいようにデフォルトでは Nice=19 , OOMScoreAdjust=1000 に設定されています。
OOM 時にハートビートを優先的に kill させ、プロセス監視機能(ウォッチドッグタイマ)で再起動させるためです。

/lib/systemd/system/sleepi3-restart.service
[Unit]
Description=sleepi3 software heartbeat
DefaultDependencies=no
After=sysinit.target

[Service]
Type=simple
Nice=19
OOMScoreAdjust=1000
Environment=LED_PATH=/sys/class/leds/sleepi:led0
ExecStart=/usr/lib/sleepi3-utils/heartbeat.py

[Install]
WantedBy=sysinit.target

service ファイルの詳細は下記コマンドでご確認ください。

man systemd.service

[手順2] OOMKiller 用プログラム作成と実行

今回はこちらのブログを参考にしました。

[手順3]復帰確認

OOM 状態になると slee-Pi3 のハートビート(LED1 の点滅)が途絶える様子を確認できます。
途絶えてから60秒後に再起動を始め、正常に起動すれば異常状態からの復帰は成功です。
※slee-Pi3 セットアップ時のハートビート監視時間は60秒です。詳細は こちら の HEARTBEAT_TIMEOUT を確認ください。

下記コマンドを実行すると再起動要因がわかります。
実際にウォッチドッグタイマのタイムアウトによる再起動が起動要因として表示されました。sleepi3ctl コマンド詳細は こちら

sleepi3ctl get wakeup-flag
watchdog

[まとめ]

今回は slee-Pi3 のプロセス監視機能による即時復帰を行いました。
ウォッチドッグタイマのおかげで自動ハードウェアリセットができ、異常が起きてもクリーンな状態で復帰ができます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0