[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Thu, 5 May 2022 15:18:09 +0200
From: Artem Savkov <asavkov@...hat.com>
To: Thomas Gleixner <tglx@...utronix.de>,
Josh Poimboeuf <jpoimboe@...hat.com>
Cc: Anna-Maria Behnsen <anna-maria@...utronix.de>,
"David S. Miller" <davem@...emloft.net>,
Hideaki YOSHIFUJI <yoshfuji@...ux-ipv6.org>,
David Ahern <dsahern@...nel.org>, netdev@...r.kernel.org,
linux-kernel@...r.kernel.org, Artem Savkov <asavkov@...hat.com>
Subject: [PATCH v5 0/2] Upper bound kernel timers
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
Powered by blists - more mailing lists