Skip to content

feat: add network performance benchmark - #4

Open
jim-junior wants to merge 3 commits into
urunc-dev:mainfrom
jim-junior:ft-add-netwrok-benckmark
Open

feat: add network performance benchmark#4
jim-junior wants to merge 3 commits into
urunc-dev:mainfrom
jim-junior:ft-add-netwrok-benckmark

Conversation

@jim-junior

Copy link
Copy Markdown
Collaborator

This PR adds a network performance benchmark adapter using iperf3.

The adapter measures network throughput between two containers running under the same configured runtime. It starts an iperf3 server container and runs an iperf3 client container against it, then collects the client result as structured JSON.

The adapter uses the nerdctl CLI and does not depend on the Go containerd client API.

How It Works

For each benchmark trial, the adapter:

  1. Pulls the runtime-specific iperf3 image.
  2. Creates a dedicated container network.
  3. Starts an iperf3 server container on that network.
  4. Starts an iperf3 client container using the same runtime and network.
  5. Configures the client to return results using iperf3 --json.
  6. Extracts and validates the JSON object from the command output.
  7. Stores the complete iperf3 result in the benchmark output.
  8. Removes the server container and dedicated network during cleanup.

The server runs with:

iperf3 -s --one-off

The client runs with:

iperf3 -c <server-name> --json

The --one-off option causes the server to exit after handling one client connection.

A separate network is created for every trial to isolate benchmark traffic. The complete native iperf3 JSON result is retained for later analysis. The adapter also supports noisy runtime output by extracting the valid JSON object from surrounding logs, This is added mainly because for the custom image that urunc is using, the output involves non-json or iperf3 related output like

\nKernel panic - not syncing: Attempted to kill init! exitcode=0x00000000\\r\\r\\nKernel Offset: 0x1b000000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)\\r\\r\\n\

Container Images

Runtime Image
runc networkstatic/iperf3:latest
Kata Containers networkstatic/iperf3:latest
gVisor networkstatic/iperf3:latest
urunc docker.io/jimjuniorb/iperf3-urunc:0.2

Signed-off-by: jim-junior <jimjunior854@gmail.com>
… adapter

Signed-off-by: jim-junior <jimjunior854@gmail.com>
Signed-off-by: jim-junior <jimjunior854@gmail.com>
@jim-junior
jim-junior force-pushed the ft-add-netwrok-benckmark branch from d2bb2dc to 5373cf9 Compare August 3, 2026 11:39
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