Module Name: src
Committed By: riastradh
Date: Mon Aug 14 16:51:52 UTC 2023
Modified Files:
src/share/man/man4: options.4
src/share/man/man7: sysctl.7
Log Message:
options(4), sysctl(7): Document options HEARTBEAT.
To generate a diff of this commit:
cvs rdiff -u -r1.525 -r1.526 src/share/man/man4/options.4
cvs rdiff -u -r1.165 -r1.166 src/share/man/man7/sysctl.7
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/share/man/man4/options.4
diff -u src/share/man/man4/options.4:1.525 src/share/man/man4/options.4:1.526
--- src/share/man/man4/options.4:1.525 Sun May 14 09:02:05 2023
+++ src/share/man/man4/options.4 Mon Aug 14 16:51:52 2023
@@ -1,4 +1,4 @@
-.\" $NetBSD: options.4,v 1.525 2023/05/14 09:02:05 riastradh Exp $
+.\" $NetBSD: options.4,v 1.526 2023/08/14 16:51:52 riastradh Exp $
.\"
.\" Copyright (c) 1996
.\" Perry E. Metzger. All rights reserved.
@@ -1343,6 +1343,53 @@ and
.Em MEMORY_DISK_DYNAMIC .
It is incompatible with
.Em MEMORY_DISK_ROOT_SIZE .
+.It Cd options HEARTBEAT
+Turns on heartbeat checks to panic if any CPU in the system or the
+timecounter appears stuck.
+.Pp
+Each CPU will periodically check in hard interrupt context that the
+timecounter has advanced and soft interrupts have run on the current
+CPU, and each CPU will also be periodically checked for progress by
+another CPU.
+.Pp
+If a CPU detects no progress has been made after
+.Dv HEARTBEAT_MAX_PERIOD
+seconds,
+.Nx
+will panic, giving the opportunity to enter ddb or get a crash dump
+even if the system has become totally unresponsive to keyboard input.
+.Pp
+This is different from a hardware watchdog timer
+.Pq Xr wdogctl 8 :
+.Bl -bullet
+.It
+.Cd options HEARTBEAT
+is purely a software mechanism, so if hard interrupts are stuck on all
+CPUs, then
+.Cd options HEARTBEAT
+cannot trigger, but a hardware watchdog timer can.
+.It
+A hardware watchdog timer won't notice if a single CPU is stuck, or if
+the system timecounter is stuck, as long as at least one CPU is not
+stuck and able to run
+.Xr wdogctl 8
+or the kernel watchdog tickle thread.
+In contrast,
+.Cd options HEARTBEAT
+uses hard interrupts on each CPU to cross-check soft interrupt progress
+on another CPU as well as the timecounter, so it can detect when a
+single CPU is unable to make progress when others are able.
+.El
+.It Cd options HEARTBEAT_MAX_PERIOD_DEFAULT=integer
+Time in seconds since the last
+.Cd options HEARTBEAT
+progress check has passed before it will trigger a panic.
+Default: 15.
+.Pp
+Can be changed at runtime via the
+.Li kern.heartbeat.max_period
+.Xr sysctl 7
+knob.
.It Cd options HZ=integer
On ports that support it, set the system clock frequency (see
.Xr hz 9 )
Index: src/share/man/man7/sysctl.7
diff -u src/share/man/man7/sysctl.7:1.165 src/share/man/man7/sysctl.7:1.166
--- src/share/man/man7/sysctl.7:1.165 Sun Jun 18 18:16:40 2023
+++ src/share/man/man7/sysctl.7 Mon Aug 14 16:51:52 2023
@@ -1,4 +1,4 @@
-.\" $NetBSD: sysctl.7,v 1.165 2023/06/18 18:16:40 riastradh Exp $
+.\" $NetBSD: sysctl.7,v 1.166 2023/08/14 16:51:52 riastradh Exp $
.\"
.\" Copyright (c) 1993
.\" The Regents of the University of California. All rights reserved.
@@ -310,6 +310,7 @@ privilege may change the value.
.It kern.fscale integer no
.It kern.fsync integer no
.It kern.hardclock_ticks integer no
+.It kern.heartbeat.max_period integer yes
.It kern.hostid integer yes
.It kern.hostname string yes
.It kern.iov_max integer no
@@ -606,6 +607,12 @@ otherwise\ 0.
Returns the number of
.Xr hardclock 9
ticks.
+.It Li kern.heartbeat.max_period
+Time in seconds since the last
+.Cd options HEARTBEAT
+progress check has passed before it will trigger a panic.
+See
+.Xr options 4 .
.It Li kern.hist
This variable contains kernel history data if the kernel was
configured for any of the options