Skip to content

Conversation

@acul71
Copy link
Contributor

@acul71 acul71 commented Feb 1, 2026

testing new python perf module in interop

@acul71
Copy link
Contributor Author

acul71 commented Feb 1, 2026

Perf test run report: perf-56235a68-035857-01-02-2026

Run: perf-56235a68-035857-01-02-2026
Started: 2026-02-01T02:58:57Z
Completed: 2026-02-01T03:47:37Z
Duration: 2920s (~49 min)
Platform: x86_64 (Linux)

Summary: 39 total (3 baseline + 36 main) → 27 passed, 12 failed.


1. Tests passed (brief)

Baselines (3/3)

  • https x https (https) — pass
  • quic-go x quic-go (quic) — pass
  • iperf x iperf (tcp) — pass

Main tests (24/36)

  • rust-v0.56 x rust-v0.56: all 9 — tcp (noise/tls, yamux/mplex), ws (noise/tls, yamux/mplex), quic-v1
  • rust-v0.56 x python-v0.x: all 9 — tcp (noise/tls, yamux/mplex), ws (noise/tls, yamux/mplex), quic-v1
  • python-v0.x x rust-v0.56: 2 — (tcp, tls, mplex), (ws, tls, mplex)
  • python-v0.x x python-v0.x: 4 — (tcp, noise, mplex), (tcp, tls, mplex), (ws, noise, mplex), (ws, tls, mplex)

2. Tests failed: reason and relevant logs

2.1 python-v0.x x rust-v0.56 (tcp, noise, yamux)

Reason: Rust listener closes the connection with KeepAliveTimeout during the first upload. Python dialer then hits Stream is closed / StreamReset while sending.

Relevant log excerpts:

python-v0_x_x_rust-v0_56__tcp__noise__yamux__listener  | Connection closed with 12D3KooW...: Some(KeepAliveTimeout)
python-v0_x_x_rust-v0_56__tcp__noise__yamux__dialer    | Error sending 262000/1073741824 bytes to 12D3KooW...:
...
python-v0_x_x_rust-v0_56__tcp__noise__yamux__dialer    |     | libp2p.stream_muxer.exceptions.MuxedStreamError: Stream is closed
...
python-v0_x_x_rust-v0_56__tcp__noise__yamux__dialer    |     | libp2p.network.stream.exceptions.StreamReset

2.2 python-v0.x x rust-v0.56 (tcp, noise, mplex)

Reason: All 10 upload iterations complete; then Rust listener closes with KeepAliveTimeout before the download phase. Python dialer then fails the first download with Expected to receive 1073741824 bytes, but received 0.

Relevant log excerpts:

python-v0_x_x_rust-v0_56__tcp__noise__mplex__dialer    | Upload iteration 10/10: 9.05 Gbps
python-v0_x_x_rust-v0_56__tcp__noise__mplex__listener  | Connection closed with 12D3KooW...: Some(KeepAliveTimeout)
python-v0_x_x_rust-v0_56__tcp__noise__mplex__dialer    | Error sending 0/0 bytes to 12D3KooW...: Expected to receive 1073741824 bytes, but received 0
...
python-v0_x_x_rust-v0_56__tcp__noise__mplex__dialer    |     | ValueError: Expected to receive 1073741824 bytes, but received 0

2.3 python-v0.x x rust-v0.56 (tcp, tls, yamux)

Reason: Same as 2.1 — Rust KeepAliveTimeout, then Python Stream is closed / StreamReset during upload.

Relevant log excerpts:

python-v0_x_x_rust-v0_56__tcp__tls__yamux__listener  | Connection closed with 12D3KooW...: Some(KeepAliveTimeout)
python-v0_x_x_rust-v0_56__tcp__tls__yamux__dialer    | Error sending 262000/1073741824 bytes to 12D3KooW...:
...
python-v0_x_x_rust-v0_56__tcp__tls__yamux__dialer    |     | libp2p.stream_muxer.exceptions.MuxedStreamError: Stream is closed
python-v0_x_x_rust-v0_56__tcp__tls__yamux__dialer    |     | libp2p.network.stream.exceptions.StreamReset

2.4 python-v0.x x rust-v0.56 (ws, noise, yamux)

Reason: Same as 2.1 — Rust KeepAliveTimeout, then Python Stream is closed / StreamReset during upload.

Relevant log excerpts:

python-v0_x_x_rust-v0_56__ws__noise__yamux__listener  | Connection closed with 12D3KooW...: Some(KeepAliveTimeout)
python-v0_x_x_rust-v0_56__ws__noise__yamux__dialer    | Error sending 262000/1073741824 bytes to 12D3KooW...:
...
python-v0_x_x_rust-v0_56__ws__noise__yamux__dialer    |     | libp2p.stream_muxer.exceptions.MuxedStreamError: Stream is closed
python-v0_x_x_rust-v0_56__ws__noise__yamux__dialer    |     | libp2p.network.stream.exceptions.StreamReset

2.5 python-v0.x x rust-v0.56 (ws, noise, mplex)

Reason: Same pattern as 2.2 — uploads complete, Rust closes with KeepAliveTimeout, then Python fails download with Expected to receive 1073741824 bytes, but received 0.

Relevant log excerpts:

python-v0_x_x_rust-v0_56__ws__noise__mplex__listener  | Connection closed with 12D3KooW...: Some(KeepAliveTimeout)
python-v0_x_x_rust-v0_56__ws__noise__mplex__dialer    | Error sending 0/0 bytes to 12D3KooW...: Expected to receive 1073741824 bytes, but received 0
...
python-v0_x_x_rust-v0_56__ws__noise__mplex__dialer    |     | ValueError: Expected to receive 1073741824 bytes, but received 0

2.6 python-v0.x x rust-v0.56 (ws, tls, yamux)

Reason: Same as 2.1 — Rust KeepAliveTimeout, then Python Stream is closed / StreamReset during upload.

Relevant log excerpts:

python-v0_x_x_rust-v0_56__ws__tls__yamux__listener  | Connection closed with 12D3KooW...: Some(KeepAliveTimeout)
python-v0_x_x_rust-v0_56__ws__tls__yamux__dialer    | Error sending 262000/1073741824 bytes to 12D3KooW...:
...
python-v0_x_x_rust-v0_56__ws__tls__yamux__dialer    |     | libp2p.stream_muxer.exceptions.MuxedStreamError: Stream is closed
python-v0_x_x_rust-v0_56__ws__tls__yamux__dialer    |     | libp2p.network.stream.exceptions.StreamReset

2.7 python-v0.x x rust-v0.56 (quic-v1)

Reason: Python dialer opens a stream but Rust does not support the protocol Python uses for the initial handshake: protocol not supported: /ipfs/id/1.0.0, response='na'. The stream is then reset; Python later gets cannot call write() after reset() during upload.

Relevant log excerpts:

python-v0_x_x_rust-v0_56__quic-v1__dialer    | Failed to open stream to peer 12D3KooWCpCxeT1MCET8yQVSQKVCV7HBFmR32zkJs9rk8vhyA43a:
python-v0_x_x_rust-v0_56__quic-v1__dialer    |   Error: protocols not supported: tried ['/ipfs/id/1.0.0'], timeout=30s. Last error: protocol not supported: /ipfs/id/1.0.0, response='na'
...
python-v0_x_x_rust-v0_56__quic-v1__dialer    | Error writing to stream 0: cannot call write() after reset()
python-v0_x_x_rust-v0_56__quic-v1__dialer    | Error sending 131000/1073741824 bytes to 12D3KooW...: Write operation failed: cannot call write() after reset()
...
python-v0_x_x_rust-v0_56__quic-v1__dialer    |     | AssertionError: cannot call write() after reset()

2.8 python-v0.x x python-v0.x (tcp, noise, yamux)

Reason: Test timed out after 300s. Python yamux throughput is low (~0.19 Gbps); 20 × 1 GB iterations exceed the runner timeout.

Relevant log excerpts:

[2026-02-01 04:25:08] ERROR:   ✗ Test timed out after 300s
[2026-02-01 04:25:08] ERROR: Test timed out after 300 seconds

2.9 python-v0.x x python-v0.x (tcp, tls, yamux)

Reason: Same as 2.8 — Test timed out after 300s (Python yamux slow, 20 × 1 GB exceeds 300s).

Relevant log excerpts:

[2026-02-01 04:30:58] ERROR:   ✗ Test timed out after 300s
[2026-02-01 04:30:58] ERROR: Test timed out after 300 seconds

2.10 python-v0.x x python-v0.x (ws, noise, yamux)

Reason: Same as 2.8 — Test timed out after 300s.

Relevant log excerpts:

[2026-02-01 04:37:33] ERROR:   ✗ Test timed out after 300s
[2026-02-01 04:37:33] ERROR: Test timed out after 300 seconds

2.11 python-v0.x x python-v0.x (ws, tls, yamux)

Reason: Same as 2.8 — Test timed out after 300s.

Relevant log excerpts:

[2026-02-01 04:44:31] ERROR:   ✗ Test timed out after 300s
[2026-02-01 04:44:31] ERROR: Test timed out after 300 seconds

2.12 python-v0.x x python-v0.x (quic-v1)

Reason: Listener (py-libp2p) cannot send on the peer-initiated stream: Cannot send data on unknown peer-initiated stream. Upload phase completes (10/10); first download fails because the listener never sent the response, so the dialer gets Expected to receive 1073741824 bytes, but received 0.

Relevant log excerpts:

python-v0_x_x_python-v0_x__quic-v1__listener  | Error writing to stream 4: Cannot send data on unknown peer-initiated stream
python-v0_x_x_python-v0_x__quic-v1__listener  | Stream 4 error: Cannot send data on unknown peer-initiated stream
python-v0_x_x_python-v0_x__quic-v1__dialer    | Upload iteration 1/10: 2.50 Gbps
...
python-v0_x_x_python-v0_x__quic-v1__dialer    | Error sending 0/0 bytes to 12D3KooW...: Expected to receive 1073741824 bytes, but received 0
...
python-v0_x_x_python-v0_x__quic-v1__dialer    |     | ValueError: Expected to receive 1073741824 bytes, but received 0

Report generated from perf run perf-56235a68-035857-01-02-2026.
(venv) luca@r17:~/PNL_Launchpad_Curriculum/Libp2p/test-plans-fork/perf$

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant