mbox series

[v4,0/2] Upper bound kernel timers

Message ID 20220407075242.118253-1-asavkov@redhat.com (mailing list archive)
Headers show
Series Upper bound kernel timers | expand

Message

Artem Savkov April 7, 2022, 7:52 a.m. UTC
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 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             | 68 ++++++++++++++++++++++++++-------
 net/ipv4/inet_connection_sock.c |  2 +-
 3 files changed, 57 insertions(+), 14 deletions(-)