* Re: [PATCH net-next,v3] tcp: Set pingpong threshold via sysctl
2023-10-11 20:30 [PATCH net-next,v3] tcp: Set pingpong threshold via sysctl Haiyang Zhang
@ 2023-10-16 9:10 ` Simon Horman
2023-10-16 11:40 ` Eric Dumazet
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Simon Horman @ 2023-10-16 9:10 UTC (permalink / raw)
To: Haiyang Zhang
Cc: linux-hyperv, netdev, kys, davem, edumazet, kuba, pabeni, corbet,
dsahern, ncardwell, ycheng, kuniyu, morleyd, mfreemon, mubashirq,
linux-doc, weiwan, linux-kernel
On Wed, Oct 11, 2023 at 01:30:44PM -0700, Haiyang Zhang wrote:
> TCP pingpong threshold is 1 by default. But some applications, like SQL DB
> may prefer a higher pingpong threshold to activate delayed acks in quick
> ack mode for better performance.
>
> The pingpong threshold and related code were changed to 3 in the year
> 2019 in:
> commit 4a41f453bedf ("tcp: change pingpong threshold to 3")
> And reverted to 1 in the year 2022 in:
> commit 4d8f24eeedc5 ("Revert "tcp: change pingpong threshold to 3"")
>
> There is no single value that fits all applications.
> Add net.ipv4.tcp_pingpong_thresh sysctl tunable, so it can be tuned for
> optimal performance based on the application needs.
>
> Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
> ---
> v3: Updated doc as suggested by Neal Cardwell.
> Updated variable location in struct netns_ipv4 as suggested by Kuniyuki
> Iwashima.
>
> v2: Make it per-namesapce setting, and other updates suggested by Neal Cardwell,
> and Kuniyuki Iwashima.
Thanks,
this looks clean to me. It seems to address the review of v2.
And keeps the knob as syctl as discussed in v2.
Reviewed-by: Simon Horman <horms@kernel.org>
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH net-next,v3] tcp: Set pingpong threshold via sysctl
2023-10-11 20:30 [PATCH net-next,v3] tcp: Set pingpong threshold via sysctl Haiyang Zhang
2023-10-16 9:10 ` Simon Horman
@ 2023-10-16 11:40 ` Eric Dumazet
2023-10-16 16:17 ` Neal Cardwell
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Eric Dumazet @ 2023-10-16 11:40 UTC (permalink / raw)
To: Haiyang Zhang
Cc: linux-hyperv, netdev, kys, davem, kuba, pabeni, corbet, dsahern,
ncardwell, ycheng, kuniyu, morleyd, mfreemon, mubashirq,
linux-doc, weiwan, linux-kernel
On Wed, Oct 11, 2023 at 10:31 PM Haiyang Zhang <haiyangz@microsoft.com> wrote:
>
> TCP pingpong threshold is 1 by default. But some applications, like SQL DB
> may prefer a higher pingpong threshold to activate delayed acks in quick
> ack mode for better performance.
>
...
>
> diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
> index f207712eece1..7d0fe76d56ef 100644
> --- a/net/ipv4/tcp_output.c
> +++ b/net/ipv4/tcp_output.c
> @@ -170,10 +170,10 @@ static void tcp_event_data_sent(struct tcp_sock *tp,
> tp->lsndtime = now;
>
> /* If it is a reply for ato after last received
> - * packet, enter pingpong mode.
> + * packet, increase pingpong count.
> */
> if ((u32)(now - icsk->icsk_ack.lrcvtime) < icsk->icsk_ack.ato)
> - inet_csk_enter_pingpong_mode(sk);
> + inet_csk_inc_pingpong_cnt(sk);
> }
>
> /* Account for an ACK we sent. */
OK, but I do not think we solved the fundamental problem of using
jiffies for this heuristic,
especially for HZ=100 or HZ=250 builds.
Reviewed-by: Eric Dumazet <edumazet@google.com>
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH net-next,v3] tcp: Set pingpong threshold via sysctl
2023-10-11 20:30 [PATCH net-next,v3] tcp: Set pingpong threshold via sysctl Haiyang Zhang
2023-10-16 9:10 ` Simon Horman
2023-10-16 11:40 ` Eric Dumazet
@ 2023-10-16 16:17 ` Neal Cardwell
2023-10-16 16:49 ` Kuniyuki Iwashima
2023-10-16 22:30 ` patchwork-bot+netdevbpf
4 siblings, 0 replies; 6+ messages in thread
From: Neal Cardwell @ 2023-10-16 16:17 UTC (permalink / raw)
To: Haiyang Zhang
Cc: linux-hyperv, netdev, kys, davem, edumazet, kuba, pabeni, corbet,
dsahern, ycheng, kuniyu, morleyd, mfreemon, mubashirq, linux-doc,
weiwan, linux-kernel
On Wed, Oct 11, 2023 at 4:31 PM Haiyang Zhang <haiyangz@microsoft.com> wrote:
>
> TCP pingpong threshold is 1 by default. But some applications, like SQL DB
> may prefer a higher pingpong threshold to activate delayed acks in quick
> ack mode for better performance.
>
> The pingpong threshold and related code were changed to 3 in the year
> 2019 in:
> commit 4a41f453bedf ("tcp: change pingpong threshold to 3")
> And reverted to 1 in the year 2022 in:
> commit 4d8f24eeedc5 ("Revert "tcp: change pingpong threshold to 3"")
>
> There is no single value that fits all applications.
> Add net.ipv4.tcp_pingpong_thresh sysctl tunable, so it can be tuned for
> optimal performance based on the application needs.
>
> Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
> ---
> v3: Updated doc as suggested by Neal Cardwell.
> Updated variable location in struct netns_ipv4 as suggested by Kuniyuki
> Iwashima.
>
> v2: Make it per-namesapce setting, and other updates suggested by Neal Cardwell,
> and Kuniyuki Iwashima.
> ---
> Documentation/networking/ip-sysctl.rst | 13 +++++++++++++
> include/net/inet_connection_sock.h | 16 ++++++++++++----
> include/net/netns/ipv4.h | 2 ++
> net/ipv4/sysctl_net_ipv4.c | 8 ++++++++
> net/ipv4/tcp_ipv4.c | 2 ++
> net/ipv4/tcp_output.c | 4 ++--
> 6 files changed, 39 insertions(+), 6 deletions(-)
Acked-by: Neal Cardwell <ncardwell@google.com>
Thanks!
neal
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH net-next,v3] tcp: Set pingpong threshold via sysctl
2023-10-11 20:30 [PATCH net-next,v3] tcp: Set pingpong threshold via sysctl Haiyang Zhang
` (2 preceding siblings ...)
2023-10-16 16:17 ` Neal Cardwell
@ 2023-10-16 16:49 ` Kuniyuki Iwashima
2023-10-16 22:30 ` patchwork-bot+netdevbpf
4 siblings, 0 replies; 6+ messages in thread
From: Kuniyuki Iwashima @ 2023-10-16 16:49 UTC (permalink / raw)
To: haiyangz
Cc: corbet, davem, dsahern, edumazet, kuba, kuniyu, kys, linux-doc,
linux-hyperv, linux-kernel, mfreemon, morleyd, mubashirq,
ncardwell, netdev, pabeni, weiwan, ycheng
From: Haiyang Zhang <haiyangz@microsoft.com>
Date: Wed, 11 Oct 2023 13:30:44 -0700
> TCP pingpong threshold is 1 by default. But some applications, like SQL DB
> may prefer a higher pingpong threshold to activate delayed acks in quick
> ack mode for better performance.
>
> The pingpong threshold and related code were changed to 3 in the year
> 2019 in:
> commit 4a41f453bedf ("tcp: change pingpong threshold to 3")
> And reverted to 1 in the year 2022 in:
> commit 4d8f24eeedc5 ("Revert "tcp: change pingpong threshold to 3"")
>
> There is no single value that fits all applications.
> Add net.ipv4.tcp_pingpong_thresh sysctl tunable, so it can be tuned for
> optimal performance based on the application needs.
>
> Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Thanks!
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH net-next,v3] tcp: Set pingpong threshold via sysctl
2023-10-11 20:30 [PATCH net-next,v3] tcp: Set pingpong threshold via sysctl Haiyang Zhang
` (3 preceding siblings ...)
2023-10-16 16:49 ` Kuniyuki Iwashima
@ 2023-10-16 22:30 ` patchwork-bot+netdevbpf
4 siblings, 0 replies; 6+ messages in thread
From: patchwork-bot+netdevbpf @ 2023-10-16 22:30 UTC (permalink / raw)
To: Haiyang Zhang
Cc: linux-hyperv, netdev, kys, davem, edumazet, kuba, pabeni, corbet,
dsahern, ncardwell, ycheng, kuniyu, morleyd, mfreemon, mubashirq,
linux-doc, weiwan, linux-kernel
Hello:
This patch was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:
On Wed, 11 Oct 2023 13:30:44 -0700 you wrote:
> TCP pingpong threshold is 1 by default. But some applications, like SQL DB
> may prefer a higher pingpong threshold to activate delayed acks in quick
> ack mode for better performance.
>
> The pingpong threshold and related code were changed to 3 in the year
> 2019 in:
> commit 4a41f453bedf ("tcp: change pingpong threshold to 3")
> And reverted to 1 in the year 2022 in:
> commit 4d8f24eeedc5 ("Revert "tcp: change pingpong threshold to 3"")
>
> [...]
Here is the summary with links:
- [net-next,v3] tcp: Set pingpong threshold via sysctl
https://git.kernel.org/netdev/net-next/c/562b1fdf061b
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 6+ messages in thread