The first harness cells
The harness started four cells on 2026-10-08. It measured each cell 11 times over two fresh environments. The target was a stock Redis 7.4.11 container.
The timers were scaled. Keepalive used an idle time of 5 s and 3 probes 2 s apart, and the kernel clock was HZ 250. The prober measured each interval from the records of the kernel.
- Prediction
- Measured runs
- Median
11 of 11 runs inside [10.99, 11.358] s; median 11.156039 s, its interval [11.061692, 11.234689] s
11 of 11 runs inside [2.994, 6.622] s; median 6.339989 s, its interval [6.236006, 6.423981] s
11 of 11 runs inside [12.594, 26.526] s; median 12.920007 s, its interval [12.863958, 13.032021] s
The algebra predicts that no TCP timer fires. The harness measured silence in 11 of 11 runs, over a window of 20 s. In each run the frozen kernel sent 5 acknowledgments.
What the cells show
Section titled “What the cells show”- Q1, an idle connection into a black hole. Keepalive found the failure in each run. The probes went out 2.016 s apart, which is 16 ms late for each step.
- Q2, a request in flight. The retransmission give-up found the failure. At
tcp_retries2 = 5, the keepalive time is shorter than the budget. Thus the cell also proves that the first retransmission stops keepalive. - Q3, a frozen process. No TCP timer fired in 20 s. The frozen kernel acknowledged the request, and it answered each keepalive probe.
Two errors that the first test found
Section titled “Two errors that the first test found”- An error of the harness. The harness measured from the tail loss probe. The budget of the give-up starts one RTO later, at the first retransmission of the RTO timer.
- An error of the algebra. The band for
tcp_retries2 = 3ended at 6.2 s, and the runs came at 6.21 s to 6.42 s. The algebra did not have the real RTO or the rounding of the timer wheel. The correction added both.
The two vantages agree
Section titled “The two vantages agree”The client also read the view of the kernel through TCP_INFO, every 2 ms. That view agrees with the eBPF records to within 0.19 ms on keepalive, and to within 4 ms on the retransmissions.