public inbox for passt-dev@passt.top
 help / color / mirror / code / Atom feed
From: Stefano Brivio <sbrivio@redhat.com>
To: David Gibson <david@gibson.dropbear.id.au>
Cc: passt-dev@passt.top
Subject: Re: [PATCH v3 00/18] RFC: Unify and simplify tap send path
Date: Thu, 26 Jan 2023 00:21:33 +0100	[thread overview]
Message-ID: <20230126002133.7a8eec98@elisabeth> (raw)
In-Reply-To: <Y9CeaIb8i+27zn18@yekko>

On Wed, 25 Jan 2023 14:13:44 +1100
David Gibson <david@gibson.dropbear.id.au> wrote:

> On Tue, Jan 24, 2023 at 10:20:43PM +0100, Stefano Brivio wrote:
> > On Fri,  6 Jan 2023 11:43:04 +1100
> > David Gibson <david@gibson.dropbear.id.au> wrote:
> >   
> > > Although we have an abstraction for the "slow path" (DHCP, NDP) guest
> > > bound packets, the TCP and UDP forwarding paths write directly to the
> > > tap fd.  However, it turns out how they send frames to the tap device
> > > is more similar than it originally appears.
> > > 
> > > This series unifies the low-level tap send functions for TCP and UDP,
> > > and makes some clean ups along the way.
> > > 
> > > This is based on my earlier outstanding series.  
> > 
> > For some reason, performance tests consistently get stuck (both TCP and
> > UDP, sometimes throughput, sometimes latency tests) with this series,
> > and not without it, but I don't see any possible relationship with that.  
> 
> Drat, I didn't encounter that.   Any chance you could bisect to figure
> out which patch specifically seems to trigger it?

I couldn't do it conclusively, yet. :/

Before "tcp: Combine two parts of passt tap send path together", no
stalls at all. After that, I'm routinely getting a stall on the
perf/passt_udp test, IPv4 host-to-guest with 256B MTU.

I know, that test is probably meaningless as a performance figure, but
it helps find issues like this, at least. :)

Yes, UDP -- the iperf3 client doesn't connect to the server, passt
doesn't crash, but it's gone (zombie) by the time I get to it. I think
it's the test scripts terminating it (even though I don't see anything
on the terminal), and script.log ends with:

2023/01/25 21:27:14 socat[3432381] E connect(5, AF=40 cid:94557 port:22, 16): Connection reset by peer
kex_exchange_identification: Connection closed by remote host
Connection closed by UNKNOWN port 65535
ssh-keygen: generating new host keys: RSA 2023/01/25 21:27:14 socat[3432390] E connect(5, AF=40 cid:94557 port:22, 16): Connection reset by peer
kex_exchange_identification: Connection closed by remote host
Connection closed by UNKNOWN port 65535
2023/01/25 21:27:14 socat[3432393] E connect(5, AF=40 cid:94557 port:22, 16): Connection reset by peer
kex_exchange_identification: Connection closed by remote host
Connection closed by UNKNOWN port 65535
2023/01/25 21:27:14 socat[3432396] E connect(5, AF=40 cid:94557 port:22, 16): Connection reset by peer
kex_exchange_identification: Connection closed by remote host
Connection closed by UNKNOWN port 65535
2023/01/25 21:27:14 socat[3432399] E connect(5, AF=40 cid:94557 port:22, 16): Connection reset by peer
kex_exchange_identification: Connection closed by remote host
Connection closed by UNKNOWN port 65535
DSA ECDSA ED25519 
# Warning: Permanently added 'guest' (ED25519) to the list of known hosts.

which looks like fairly normal retries.

If I run the tests with DEBUG=1, they get stuck during UDP functional
testing, so I'm letting that aside for a moment.

If I apply the whole series, other tests get stuck (including TCP ones).

There might be something going wrong with iperf3's (TCP) control
message exchange. I'm going to run this single test next, and add some
debugging prints here and there.

> I wonder if this could be related to the stalls I'm debugging,
> although those didn't appear on the perf tests and also occur on
> main.  I have now discovered they seem to be masked by large socket
> buffer sizes - more info at https://bugs.passt.top/show_bug.cgi?id=41

Maybe the subsequent failures (or even this one) could actually be
related, and triggered somehow by some change in timing. I'm still
clueless at the moment.

-- 
Stefano


  reply	other threads:[~2023-01-25 23:21 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-06  0:43 [PATCH v3 00/18] RFC: Unify and simplify tap send path David Gibson
2023-01-06  0:43 ` [PATCH v3 01/18] pcap: Introduce pcap_frame() helper David Gibson
2023-01-06  0:43 ` [PATCH v3 02/18] pcap: Replace pcapm() with pcap_multiple() David Gibson
2023-01-06  0:43 ` [PATCH v3 03/18] tcp: Combine two parts of passt tap send path together David Gibson
2023-01-06  0:43 ` [PATCH v3 04/18] tcp: Don't compute total bytes in a message until we need it David Gibson
2023-01-06  0:43 ` [PATCH v3 05/18] tcp: Improve interface to tcp_l2_buf_flush() David Gibson
2023-01-06  0:43 ` [PATCH v3 06/18] tcp: Combine two parts of pasta tap send path together David Gibson
2023-02-13  1:13   ` Stefano Brivio
2023-01-06  0:43 ` [PATCH v3 07/18] tap, tcp: Move tap send path to tap.c David Gibson
2023-01-06  0:43 ` [PATCH v3 08/18] util: Introduce hton*_constant() in place of #ifdefs David Gibson
2023-01-06  0:43 ` [PATCH v3 09/18] tcp, udp: Use named field initializers in iov_init functions David Gibson
2023-01-06  0:43 ` [PATCH v3 10/18] util: Parameterize ethernet header initializer macro David Gibson
2023-01-06  0:43 ` [PATCH v3 11/18] tcp: Remove redundant and incorrect initialization from *_iov_init() David Gibson
2023-01-06  0:43 ` [PATCH v3 12/18] tcp: Consolidate calculation of total frame size David Gibson
2023-01-06  0:43 ` [PATCH v3 13/18] tap: Add "tap headers" abstraction David Gibson
2023-01-06  0:43 ` [PATCH v3 14/18] tcp: Use abstracted tap header David Gibson
2023-01-06  0:43 ` [PATCH v3 15/18] tap: Use different io vector bases depending on tap type David Gibson
2023-01-06  0:43 ` [PATCH v3 16/18] udp: Use abstracted tap header David Gibson
2023-01-06  0:43 ` [PATCH v3 17/18] tap: Improve handling of partial frame sends David Gibson
2023-01-06  0:43 ` [PATCH v3 18/18] udp: Use tap_send_frames() David Gibson
2023-01-24 21:20 ` [PATCH v3 00/18] RFC: Unify and simplify tap send path Stefano Brivio
2023-01-25  3:13   ` David Gibson
2023-01-25 23:21     ` Stefano Brivio [this message]
2023-02-13  1:14       ` Stefano Brivio

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=20230126002133.7a8eec98@elisabeth \
    --to=sbrivio@redhat.com \
    --cc=david@gibson.dropbear.id.au \
    --cc=passt-dev@passt.top \
    /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.
Code repositories for project(s) associated with this public inbox

	https://passt.top/passt

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 IMAP folder(s).