netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Neal Cardwell <ncardwell@google.com>
To: David Miller <davem@davemloft.net>
Cc: Lawrence Brakmo <brakmo@fb.com>, Netdev <netdev@vger.kernel.org>,
	Kernel Team <kernel-team@fb.com>,
	bmatheny@fb.com, ast@fb.com, Yuchung Cheng <ycheng@google.com>,
	Steve Ibanez <sibanez@stanford.edu>,
	Eric Dumazet <eric.dumazet@gmail.com>,
	Yousuk Seung <ysseung@google.com>
Subject: Re: [PATCH net-next v3 0/2] tcp: fix high tail latencies in DCTCP
Date: Sat, 7 Jul 2018 10:07:18 -0400	[thread overview]
Message-ID: <CADVnQynGoKx-dahx0xgG==NOae_=EsgfthqNWvON8z9ZDSpGqw@mail.gmail.com> (raw)
In-Reply-To: <20180707.201500.1708121396951549394.davem@davemloft.net>

On Sat, Jul 7, 2018 at 7:15 AM David Miller <davem@davemloft.net> wrote:
>
> From: Lawrence Brakmo <brakmo@fb.com>
> Date: Tue, 3 Jul 2018 09:26:13 -0700
>
> > When have observed high tail latencies when using DCTCP for RPCs as
> > compared to using Cubic. For example, in one setup there are 2 hosts
> > sending to a 3rd one, with each sender having 3 flows (1 stream,
> > 1 1MB back-to-back RPCs and 1 10KB back-to-back RPCs). The following
> > table shows the 99% and 99.9% latencies for both Cubic and dctcp:
> >
> >            Cubic 99%  Cubic 99.9%   dctcp 99%    dctcp 99.9%
> > 1MB RPCs    2.6ms       5.5ms         43ms          208ms
> > 10KB RPCs    1.1ms       1.3ms         53ms          212ms
>  ...
> > v2: Removed call to tcp_ca_event from tcp_send_ack since I added one in
> >     tcp_event_ack_sent. Based on Neal Cardwell <ncardwell@google.com>
> >     feedback.
> >     Modified tcp_ecn_check_ce (and renamed it tcp_ecn_check) instead of modifying
> >     tcp_ack_send_check to insure an ACK when cwr is received.
> > v3: Handling cwr in tcp_ecn_accept_cwr instead of in tcp_ecn_check.
> >
> > [PATCH net-next v3 1/2] tcp: notify when a delayed ack is sent
> > [PATCH net-next v3 2/2] tcp: ack immediately when a cwr packet
>
> Neal and co., what are your thoughts right now about this patch series?
>
> Thank you.

IMHO these patches are a definite improvement over what we have now.

That said, in chatting with Yuchung before the July 4th break, I think
Yuchung and I agreed that we would ideally like to see something like
the following:

(1) refactor the DCTCP code to check for pending delayed ACKs directly
using existing state (inet_csk(sk)->icsk_ack.pending &
ICSK_ACK_TIMER), and remove the ca->delayed_ack_reserved DCTCP field
and the CA_EVENT_DELAYED_ACK and CA_EVENT_NON_DELAYED_ACK callbacks
added for DCTCP (which Larry determined had at least one bug).

(2) fix the bug with the DCTCP call to tcp_send_ack(sk) causing
delayed ACKs to be incorrectly dropped/forgotten (not yet addressed by
this patch series)

(3) then with fixes (1) and (2) in place, re-run tests and see if we
still need Larry's heuristic (in patch 2) to fire an ACK immediately
if a receiver receives a CWR packet (I suspect this is still very
useful, but I think Yuchung is reluctant to add this complexity unless
we have verified it's still needed after (1) and (2))

Our team may be able to help out with some proposed patches for (1) and (2).

In any case, I would love to have Yuchung and Eric weigh in (perhaps
Monday) before we merge this patch series.

Thanks,
neal

  reply	other threads:[~2018-07-07 14:07 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-03 16:26 [PATCH net-next v3 0/2] tcp: fix high tail latencies in DCTCP Lawrence Brakmo
2018-07-03 16:26 ` [PATCH net-next v3 1/2] tcp: notify when a delayed ack is sent Lawrence Brakmo
2018-07-03 16:26 ` [PATCH net-next v3 2/2] tcp: ack immediately when a cwr packet arrives Lawrence Brakmo
2018-07-07 11:15 ` [PATCH net-next v3 0/2] tcp: fix high tail latencies in DCTCP David Miller
2018-07-07 14:07   ` Neal Cardwell [this message]
2018-07-09 16:31     ` Yuchung Cheng
2018-07-09 18:47       ` Lawrence Brakmo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CADVnQynGoKx-dahx0xgG==NOae_=EsgfthqNWvON8z9ZDSpGqw@mail.gmail.com' \
    --to=ncardwell@google.com \
    --cc=ast@fb.com \
    --cc=bmatheny@fb.com \
    --cc=brakmo@fb.com \
    --cc=davem@davemloft.net \
    --cc=eric.dumazet@gmail.com \
    --cc=kernel-team@fb.com \
    --cc=netdev@vger.kernel.org \
    --cc=sibanez@stanford.edu \
    --cc=ycheng@google.com \
    --cc=ysseung@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).