Messages in this thread | | | From | Artem Savkov <> | Subject | [PATCH v5 0/2] Upper bound kernel timers | Date | Thu, 5 May 2022 15:18:09 +0200 |
| |
As previously discussed [1] we had a report of a regression in TCP keepalive timer where timers were up to 4 minutes late resulting in disconnects.
This patchset tries to fix the problem by introducing upper bound kernel timers and making tcp keepalive timer use those.
[1] https://lore.kernel.org/all/20210302001054.4qgrvnkltvkgikzr@treble/T/#u
--- Changes in v5: - The least intrusive and most straightforward approach. This avoids touching any of existing code. The timeout supplied is always reduced by a known timer wheel error margin of 12.5%. - Commit message adjustments.
Changes in v4: - Drop any attempts to be smart when calculating timer adjustment and always substract LVL_GRAN so that base clock lag won't be such a problem. This means that in some cases we will always be early, but all we want is not to be late.
Changes in v3: - A different approach: instead of introducing upper bound timers try to account for timer wheen granularity on timer (re)arming step. - Not sure whether moving lvl calculation into a separate function is worth it. - Had a hard time naming the upper_bount_timeout() function - any suggestions welcome.
Changes in v2: - TIMER_UPPER_BOUND flag description added as a comment in timer.h - Code style fixes - More elaborate commit message in timer commit
Artem Savkov (2): timer: add a function to adjust timeouts to be upper bound net: make tcp keepalive timer upper bound
include/linux/timer.h | 1 + kernel/time/timer.c | 14 ++++++++++++++ net/ipv4/inet_connection_sock.c | 2 +- 3 files changed, 16 insertions(+), 1 deletion(-)
-- 2.34.1
| |