RE: [PATCH net-next,v2] tcp: Set pingpong threshold via sysctl
From: Haiyang Zhang
Date: Tue Oct 10 2023 - 19:02:43 EST
> -----Original Message-----
> From: Yuchung Cheng <ycheng@xxxxxxxxxx>
> Sent: Tuesday, October 10, 2023 6:27 PM
> To: Stephen Hemminger <stephen@xxxxxxxxxxxxxxxxxx>
> Cc: Haiyang Zhang <haiyangz@xxxxxxxxxxxxx>; linux-hyperv@xxxxxxxxxxxxxxx;
> netdev@xxxxxxxxxxxxxxx; KY Srinivasan <kys@xxxxxxxxxxxxx>;
> davem@xxxxxxxxxxxxx; edumazet@xxxxxxxxxx; kuba@xxxxxxxxxx;
> pabeni@xxxxxxxxxx; corbet@xxxxxxx; dsahern@xxxxxxxxxx;
> ncardwell@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
>
> On Tue, Oct 10, 2023 at 3:14 PM Stephen Hemminger
> <stephen@xxxxxxxxxxxxxxxxxx> wrote:
> >
> > On Tue, 10 Oct 2023 12:23:30 -0700
> > 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>
> >
> > If this an application specific optimization, it should be in a socket option
> > rather than system wide via sysctl.
> Initially I had a similar comment but later decided a sysctl could
> still be useful if
> 1) the entire host (e.g. virtual machine) is dedicated to that application
> 2) that application is difficult to change
Yes, the customer actually wants a global setting. But as suggested by Neal,
I changed it to be per-namespace to match other TCP tunables.
Thanks,
- Haiyang