linux:rpi:watchdog

Настройка watchdog в Raspberry Pi 4

Зачем это нужно

Зачем? Отвечает Александр Друзь ChatGPT:

Watchdog на Raspberry Pi используется для автоматического мониторинга состояния системы и перезапуска устройства в случае зависания, сбоя или других критических ошибок. Это может быть полезно, например, в автоматизированных системах или проектах, где требуется высокая надежность работы, и недопустимы длительные простои.

Как работает Watchdog? Watchdog — это либо аппаратный, либо программный таймер, который регулярно должен получать "сигналы жизни" от системы. Если сигналы не поступают в течение заданного времени, таймер автоматически инициирует перезагрузку системы. Это помогает восстановить работоспособность системы в случае зависания или сбоев.

Далее по тексту WD=Watchdog.

Инструкции

Broadcom чип

В Raspberry Pi 4 аппаратный WD. Посмотрим детальнее

dmesg

dx@rpi:~ $ dmesg | grep -i watchdog
[    1.538466] bcm2835-wdt bcm2835-wdt: Broadcom BCM2835 watchdog timer

WD является systemd процессом, поэтому можем посмотреть информацию через systemctl

dx@rpi:~ $ systemctl show | grep -i watchdog
WatchdogLastPingTimestampMonotonic=18446744073709551615
RuntimeWatchdogUSec=0
RuntimeWatchdogPreUSec=0
RebootWatchdogUSec=10min
KExecWatchdogUSec=0
ServiceWatchdogs=yes

Также можно использовать утилиту wdctl (входит в состав пакета util-linux) для получения информации о состоянии WD.

dx@rpi:~ $ sudo wdctl 
Device:        /dev/watchdog0
Identity:      Broadcom BCM2835 Watchdog timer [version 0]
Timeout:       15 seconds
Timeleft:      15 seconds
Pre-timeout:    0 seconds
FLAG           DESCRIPTION               STATUS BOOT-STATUS
KEEPALIVEPING  Keep alive ping reply          1           0
MAGICCLOSE     Supports magic close char      0           0
SETTIMEOUT     Set timeout (in seconds)       0           0

journalctl

dx@rpi:~ $ journalctl -b --no-pager | grep Watchdog
Nov 10 00:25:42 rpi systemd[1]: Using hardware watchdog 'Broadcom BCM2835 Watchdog timer', version 0, device /dev/watchdog0
Nov 10 00:25:42 rpi systemd[1]: Watchdog running with a timeout of 15s.

Настройка

Добавить в файл /etc/systemd/system.conf

RuntimeWatchdogSec=10
RebootWatchdogSec=2min

RuntimeWatchdogSec - если система перестаёт отвечать в течение этого времени, WD инициирует перезагрузку устройства.

Например, значение 10 означает, что WD ожидает сигнал каждые 10 секунд. Если сигнал не поступает, WD считает, что система зависла, и предпринимает действие (обычно перезагрузку).

Можно увеличить значение, чтобы избежать ложных срабатываний. Параметр RuntimeWatchdogSec может принимать значения от 1 до 15 секунд.

RebootWatchdogSec - этот параметр указывает время в минутах, которое WD будет ждать перед перезапуском системы после обнаружения сбоя.

Значение 2min означает, что система будет перезапущена через 2 минуты после активации WD.

Осталось применить изменения в системе

sudo systemctl daemon-reload

Дополнительные параметры можно посмотреть в документации SYSTEMD-SYSTEM.CONF(5).

Проверка

Вызываем kernel panic

sudo echo 1 > /proc/sys/kernel/sysrq
sudo echo "c" > /proc/sysrq-trigger

или же используем fork-bomb, как описано здесь.

systemd-analyze

Вопрос не прямо связанный с WD - а сколько же времени занимает загрузка моего RPi?

Про это нам расскажет наш специальный корреспондент systemd-analyze

Просто показать время загрузки

$ systemd-analyze time
Startup finished in 3.341s (kernel) + 10.877s (userspace) = 14.218s 
multi-user.target reached after 10.828s in userspace.

Линукс-блейминг - отображает список служб и процессов, которые запускались во время загрузки системы, с указанием времени, затраченного на их старт. Это помогает выявить службы, замедляющие процесс загрузки.

$ systemd-analyze blame
4.740s NetworkManager-wait-online.service
1.480s raspi-config.service
1.382s dev-mmcblk0p2.device
1.321s apt-daily-upgrade.service
1.319s apt-daily.service
1.142s e2scrub_reap.service
1.036s networking.service
 856ms rpi-eeprom-update.service
 852ms ModemManager.service
 759ms NetworkManager.service
 657ms man-db.service
 627ms lighttpd.service

Вывод графическом виде (SVG)

systemd-analyze plot > rpi.svg

EOM

Discussion

Enter your comment. Wiki syntax is allowed:
 
linux/rpi/watchdog.txt · Last modified: by dx