BPI-R64 hardpps soak — fully tickless, 5s pulses

1 Hz pulses5 s pulses
tickless (NO_HZ_IDLE)tickless, 1Hztickless, 5s
tickful (nohz=off)tickful, 1Hztickful, 5s
back-dated (entry.S timestamp)tickful, 1Hztickless, 5s
spin-poll (mlichvar mode)tickful, 1Hz—
spin-poll (bracketed counter)tickless, 1Hz—

Cortex-A53 (BPI-R64), 12.5 MHz arch counter, u-blox GNSS timepulse into pps-gpio, in-kernel hardpps() disciplining CLOCK_REALTIME with STA_PPSTIME|STA_PPSFREQ|STA_PLL. Kernel: the timekeeping series plus bench instrumentation (r64-bench branch) on 7.3-rc1 — including the idle-sleep bound while a slew is in flight and the proportional ntp_error correction — plus silent bench instrumentation (per-pulse ring captured in the PPS hardirq, drained to disk once a minute in the pulse's shadow). No distro userspace: a single static PID 1 sets the date from NMEA, binds hardpps, and sleeps. All periodic wakeup sources were disabled (vmstat, runtime-PM autosuspend, fair dl_server, ethernet not probed). Tickless cells boot NO_HZ_IDLE; tickful cells add nohz=off on the same kernel binary.

6095 pulses over 8.5 h. Steady state (|ntp_error| at pulse, after 60 min): median 4 ns, p95 759 ns, p99 4281 ns, max 18180 ns. Corrected pulse phase: median 5.5 µs, p95 33.1 µs.

Per-pulse snapshot ntp_error

Pulse arrival phase (corrected ts_real)

Slew term attribution

Discipline state

Disciplined frequency vs room temperature

Room air temperature (sensor near the board, not on it) against the PLL-disciplined frequency. Context only: the crystal's own temperature is not measured.

Tickless gap verification

Methodology

This run is the test asked for on the list: hardpps on a tickless kernel driven by a real PPS source, with its real jitter and IRQ latency, and the CPU genuinely idle between pulses.

Data