RE: [PATCH net-next,v2] tcp: Set pingpong threshold via sysctl
From: Haiyang Zhang
Date: Tue Oct 10 2023 - 17:06:11 EST
> -----Original Message-----
> From: Neal Cardwell <ncardwell@xxxxxxxxxx>
> Sent: Tuesday, October 10, 2023 4:07 PM
> To: Haiyang Zhang <haiyangz@xxxxxxxxxxxxx>
> Cc: linux-hyperv@xxxxxxxxxxxxxxx; netdev@xxxxxxxxxxxxxxx; KY Srinivasan
> <kys@xxxxxxxxxxxxx>; davem@xxxxxxxxxxxxx; edumazet@xxxxxxxxxx;
> kuba@xxxxxxxxxx; pabeni@xxxxxxxxxx; corbet@xxxxxxx;
> dsahern@xxxxxxxxxx; ycheng@xxxxxxxxxx; kuniyu@xxxxxxxxxx;
> morleyd@xxxxxxxxxx; mfreemon@xxxxxxxxxxxxxx; mubashirq@xxxxxxxxxx;
> linux-doc@xxxxxxxxxxxxxxx; weiwan@xxxxxxxxxx; linux-
> kernel@xxxxxxxxxxxxxxx
> Subject: Re: [PATCH net-next,v2] tcp: Set pingpong threshold via sysctl
>
> [You don't often get email from ncardwell@xxxxxxxxxx. Learn why this is
> important at https://aka.ms/LearnAboutSenderIdentification ]
>
> On Tue, Oct 10, 2023 at 3:24 PM Haiyang Zhang <haiyangz@xxxxxxxxxxxxx>
> 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@xxxxxxxxxxxxx>
> > ---
> > v2: Make it per-namesapce setting, and other updates suggested by Neal
> Cardwell,
> > and Kuniyuki Iwashima.
> >
> > ---
> > Documentation/networking/ip-sysctl.rst | 8 ++++++++
> > include/net/inet_connection_sock.h | 16 ++++++++++++----
> > include/net/netns/ipv4.h | 1 +
> > net/ipv4/sysctl_net_ipv4.c | 8 ++++++++
> > net/ipv4/tcp_ipv4.c | 2 ++
> > net/ipv4/tcp_output.c | 4 ++--
> > 6 files changed, 33 insertions(+), 6 deletions(-)
> >
> > diff --git a/Documentation/networking/ip-sysctl.rst
> b/Documentation/networking/ip-sysctl.rst
> > index 5bfa1837968c..c0308b65dc2f 100644
> > --- a/Documentation/networking/ip-sysctl.rst
> > +++ b/Documentation/networking/ip-sysctl.rst
> > @@ -1183,6 +1183,14 @@ tcp_plb_cong_thresh - INTEGER
> >
> > Default: 128
> >
> > +tcp_pingpong_thresh - INTEGER
> > + TCP pingpong threshold is 1 by default, but some application may need
> a
> > + higher threshold for optimal performance.
> > +
> > + Possible Values: 1 - 255
> > +
> > + Default: 1
> > +
>
> It would be good to document what the meaning of the parameter is.
> Perhaps consider something like:
>
> 'The number of estimated data replies sent for estimated incoming data
> requests that must happen before TCP estimates that a connection is a
> "ping-pong" (request-response) connection for which delayed
> acknowledgments can provide benefits. This threshold is 1 by default,
> but some applications may need a higher threshold for optimal
> performance.'
>
Will do.
Thanks,
- Haiyang