Skip to content

Migrate/perf interop#52

Draft
sumanjeet0012 wants to merge 10 commits intolibp2p:masterfrom
sumanjeet0012:migrate/perf_interop
Draft

Migrate/perf interop#52
sumanjeet0012 wants to merge 10 commits intolibp2p:masterfrom
sumanjeet0012:migrate/perf_interop

Conversation

@sumanjeet0012
Copy link
Collaborator

Summary

  • Migrate the effective changes from libp2p/test-plans#808 into libp2p/unified-testing.
  • Update perf/images.yaml to include python-v0.x in perf aliases and add python implementation configuration for perf runs.
  • Keep migration scoped to the meaningful non-merge commit from the source PR.
  • Used fork commit for testing.

Context

Test plan

  • Run perf with --test-select "~python".
  • Verify python image builds and participates in selected perf matrix entries.
  • Validate known failing combinations remain correctly represented by aliases/filters.

acul71 and others added 2 commits February 24, 2026 03:47
(cherry picked from commit 285b6d3b7d3e4004e19975ae4426a07b27dd7d5f)
@sumanjeet0012
Copy link
Collaborator Author

@dhuseby Some tests are failing due to timeout,
can you just increase timeout from 300 to 600 seconds.

@sumanjeet0012 sumanjeet0012 force-pushed the migrate/perf_interop branch from 19695c7 to 92621fc Compare March 2, 2026 07:50
@dhuseby
Copy link
Contributor

dhuseby commented Mar 5, 2026

I just tested this locally with ./run.sh --baseline-ignore '~baselines' --impl-ignore '!python-v0.x' --force-image-rebuild --force-matrix-rebuild --yes and everything passed except the quic-v1 transport test. The problem appears to be in the download test. Here's the relevant portions of python-v0_x_x_python-v0_x__quic-v1_.log.

python-v0_x_x_python-v0_x__quic-v1__dialer    | Download 1/10: 0.02 Gbps
python-v0_x_x_python-v0_x__quic-v1__dialer    | Download 2/10: 0.02 Gbps
python-v0_x_x_python-v0_x__quic-v1__listener  | Error reading from stream 32: Read timeout on stream 32
python-v0_x_x_python-v0_x__quic-v1__listener  | Stream 32 error: Read timeout on stream 32
python-v0_x_x_python-v0_x__quic-v1__listener  | Error reading from stream 16: Read timeout on stream 16
python-v0_x_x_python-v0_x__quic-v1__listener  | Stream 16 error: Read timeout on stream 16
python-v0_x_x_python-v0_x__quic-v1__listener  | Error reading from stream 12: Read timeout on stream 12
python-v0_x_x_python-v0_x__quic-v1__listener  | Stream 12 error: Read timeout on stream 12
python-v0_x_x_python-v0_x__quic-v1__listener  | Error reading from stream 24: Read timeout on stream 24
python-v0_x_x_python-v0_x__quic-v1__listener  | Stream 24 error: Read timeout on stream 24
python-v0_x_x_python-v0_x__quic-v1__listener  | Error reading from stream 8: Read timeout on stream 8
python-v0_x_x_python-v0_x__quic-v1__listener  | Stream 8 error: Read timeout on stream 8
python-v0_x_x_python-v0_x__quic-v1__listener  | Error reading from stream 0: Read timeout on stream 0
python-v0_x_x_python-v0_x__quic-v1__listener  | Stream 0 error: Read timeout on stream 0
python-v0_x_x_python-v0_x__quic-v1__listener  | Error reading from stream 28: Read timeout on stream 28
python-v0_x_x_python-v0_x__quic-v1__listener  | Stream 28 error: Read timeout on stream 28
python-v0_x_x_python-v0_x__quic-v1__listener  | Error reading from stream 20: Read timeout on stream 20
python-v0_x_x_python-v0_x__quic-v1__listener  | Stream 20 error: Read timeout on stream 20
python-v0_x_x_python-v0_x__quic-v1__listener  | Error reading from stream 40: Read timeout on stream 40
python-v0_x_x_python-v0_x__quic-v1__listener  | Stream 40 error: Read timeout on stream 40
python-v0_x_x_python-v0_x__quic-v1__listener  | Error reading from stream 36: Read timeout on stream 36
python-v0_x_x_python-v0_x__quic-v1__listener  | Stream 36 error: Read timeout on stream 36
python-v0_x_x_python-v0_x__quic-v1__listener  | Connection object not found in tracking
python-v0_x_x_python-v0_x__quic-v1__listener  | Connection object not found in tracking
python-v0_x_x_python-v0_x__quic-v1__dialer    | Error sending 0/0 bytes to 12D3KooWBKW1TLjHKMiGN7VELQe5QYRQRRFBxDX5VxzSwAMaYJCD: Expected to receive 1073741824 bytes, but received 155400535
python-v0_x_x_python-v0_x__quic-v1__dialer    | Error: Exceptions from Trio nursery (1 sub-exception)
python-v0_x_x_python-v0_x__quic-v1__dialer    |   + Exception Group Traceback (most recent call last):
python-v0_x_x_python-v0_x__quic-v1__dialer    |   |   File "/app/perf_test.py", line 679, in run
python-v0_x_x_python-v0_x__quic-v1__dialer    |   |     await self.run_dialer()
python-v0_x_x_python-v0_x__quic-v1__dialer    |   |   File "/app/perf_test.py", line 573, in run_dialer
python-v0_x_x_python-v0_x__quic-v1__dialer    |   |     async with self.host.run(listen_addrs=dialer_listen_addrs or []):
python-v0_x_x_python-v0_x__quic-v1__dialer    |   |                ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
python-v0_x_x_python-v0_x__quic-v1__dialer    |   |   File "/usr/local/lib/python3.13/contextlib.py", line 235, in __aexit__
python-v0_x_x_python-v0_x__quic-v1__dialer    |   |     await self.gen.athrow(value)
python-v0_x_x_python-v0_x__quic-v1__dialer    |   |   File "/app/venv/lib/python3.13/site-packages/libp2p/host/basic_host.py", line 366, in _run
python-v0_x_x_python-v0_x__quic-v1__dialer    |   |     async with background_trio_service(network):
python-v0_x_x_python-v0_x__quic-v1__dialer    |   |                ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
python-v0_x_x_python-v0_x__quic-v1__dialer    |   |   File "/usr/local/lib/python3.13/contextlib.py", line 235, in __aexit__
python-v0_x_x_python-v0_x__quic-v1__dialer    |   |     await self.gen.athrow(value)
python-v0_x_x_python-v0_x__quic-v1__dialer    |   |   File "/app/venv/lib/python3.13/site-packages/libp2p/tools/async_service/trio_service.py", line 460, in background_trio_service
python-v0_x_x_python-v0_x__quic-v1__dialer    |   |     async with trio.open_nursery() as nursery:
python-v0_x_x_python-v0_x__quic-v1__dialer    |   |                ~~~~~~~~~~~~~~~~~^^
python-v0_x_x_python-v0_x__quic-v1__dialer    |   |   File "/app/venv/lib/python3.13/site-packages/trio/_core/_run.py", line 1126, in __aexit__
python-v0_x_x_python-v0_x__quic-v1__dialer    |   |     raise combined_error_from_nursery
python-v0_x_x_python-v0_x__quic-v1__dialer    |   | ExceptionGroup: Exceptions from Trio nursery (1 sub-exception)
python-v0_x_x_python-v0_x__quic-v1__dialer    |   +-+---------------- 1 ----------------
python-v0_x_x_python-v0_x__quic-v1__dialer    |     | Traceback (most recent call last):
python-v0_x_x_python-v0_x__quic-v1__dialer    |     |   File "/app/venv/lib/python3.13/site-packages/libp2p/tools/async_service/trio_service.py", line 465, in background_trio_service
python-v0_x_x_python-v0_x__quic-v1__dialer    |     |     yield manager
python-v0_x_x_python-v0_x__quic-v1__dialer    |     |   File "/app/venv/lib/python3.13/site-packages/libp2p/host/basic_host.py", line 383, in _run
python-v0_x_x_python-v0_x__quic-v1__dialer    |     |     yield
python-v0_x_x_python-v0_x__quic-v1__dialer    |     |   File "/app/perf_test.py", line 599, in run_dialer
python-v0_x_x_python-v0_x__quic-v1__dialer    |     |     elapsed = await self._one_measurement(0, self.download_bytes)
python-v0_x_x_python-v0_x__quic-v1__dialer    |     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
python-v0_x_x_python-v0_x__quic-v1__dialer    |     |   File "/app/perf_test.py", line 533, in _one_measurement
python-v0_x_x_python-v0_x__quic-v1__dialer    |     |     async for _ in self.perf_service.measure_performance(
python-v0_x_x_python-v0_x__quic-v1__dialer    |     |     ...<2 lines>...
python-v0_x_x_python-v0_x__quic-v1__dialer    |     |         pass
python-v0_x_x_python-v0_x__quic-v1__dialer    |     |   File "/app/venv/lib/python3.13/site-packages/libp2p/perf/perf_service.py", line 278, in measure_performance
python-v0_x_x_python-v0_x__quic-v1__dialer    |     |     raise ValueError(
python-v0_x_x_python-v0_x__quic-v1__dialer    |     |     ...<2 lines>...
python-v0_x_x_python-v0_x__quic-v1__dialer    |     |     )
python-v0_x_x_python-v0_x__quic-v1__dialer    |     | ValueError: Expected to receive 1073741824 bytes, but received 155400535
python-v0_x_x_python-v0_x__quic-v1__dialer    |     +------------------------------------
python-v0_x_x_python-v0_x__quic-v1__dialer exited with code 1

action.yml: add transport-select and transport-ignore inputs so callers
can scope the test matrix to specific transports.  The new flags are
wired through to run.sh --transport-select / --transport-ignore.

perf-pr.yml: on automatic PR triggers (push to a branch), default
  transport-select=quic-v1 so only the quic-v1 rows of the test matrix
  run — reducing CI time from ~1.5 hours to ~15 minutes.  The full
  matrix is still available for manual workflow_dispatch runs (default
  transport-select=quic-v1 which can be overridden to '' for all).

perf/images.yaml: bump python-v0.x commit to 88a3df81 (fixes 1 GB
  download stall in CI via busy-wait pacing + larger timeouts/buffers).
@acul71
Copy link
Collaborator

acul71 commented Mar 7, 2026

#37

@dhuseby
Copy link
Contributor

dhuseby commented Mar 9, 2026

@sumanjeet0012 it seems like you and @acul71 are trying to do the same thing. @acul71 has this PR: #37

I think you two should combine efforts.

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.

3 participants