Skip to content

Benchmark network - #29

Open
MykolaSuperman wants to merge 4 commits into
mainfrom
benchmark-network
Open

Benchmark network#29
MykolaSuperman wants to merge 4 commits into
mainfrom
benchmark-network

Conversation

@MykolaSuperman

Copy link
Copy Markdown

No description provided.

Mykola Solianko added 4 commits August 7, 2026 18:28
Move the iperf3 throughput benchmark into the new structure: one folder
per benchmark group, a single src/ built for any architecture rather than
a copy per architecture, and one item per scenario differing only in the
TARGET environment variable, so nothing about a scenario is baked into
the code.

Results now go two ways. The log keeps every test in full, iperf3's own
JSON document included, which is what makes a failed run diagnosable
afterwards. VictoriaMetrics gets only what is worth a time series -
throughput per test, plus loss and jitter for the UDP ones - pushed as
benchmark_result samples bracketed by checkpoint_event Start/Stop, in the
same shape as services/template/py.

Both scenarios whose server runs outside the container need it bound to
the address the client dials. Without that the reply carries the service
bridge address as source, iperf3 connects its UDP socket, and the kernel
drops the mismatched datagrams: the UDP tests fail while the TCP ones
pass.

Signed-off-by: Mykola Solianko <mykola_solianko@epam.com>
Move the sockperf round trip time benchmark into the new structure,
alongside bandwidth: one folder per benchmark group, a single src/ built
for any architecture, and one item per scenario differing only in the
TARGET environment variable.

The client reports percentiles rather than an average, since latency
distributions are skewed and an average hides the tail that real-time and
RPC traffic feel. The log keeps every test in full, sockperf's own report
included, which matters because the tool has no machine readable output
and everything is parsed out of that text. VictoriaMetrics gets the three
percentiles the benchmark plan names, pushed as benchmark_result samples
bracketed by checkpoint_event Start/Stop.

sockperf listens either on UDP or, with --tcp, on TCP, never on both, so
the server side runs one of each; TCP and UDP port numbers are
independent, so both use the same port.

Signed-off-by: Mykola Solianko <mykola_solianko@epam.com>
Move the DNS resolve time benchmark into the new structure, completing
the network group: one folder per benchmark group, a single src/ built
for any architecture, and one item per scenario differing only in the
environment.

The client builds and sends the query itself instead of shelling out to
dig. dig reports its query time in whole milliseconds while a local
dnsmasq answers in hundreds of microseconds, so every sample would read
as zero, and timing the dig process from outside costs more than the
query it measures. Doing it in-process also keeps bind-utils out of the
image.

The log keeps every individual sample, so percentiles can be recomputed
or several instances pooled without re-running anything, while
VictoriaMetrics gets the three percentiles the benchmark plan names.

The external scenario prepends a random label to every query, since
dnsmasq would otherwise serve everything after the first from its cache
and the scenario would stop describing resolution.

Signed-off-by: Mykola Solianko <mykola_solianko@epam.com>
Add an overview of what services/network measures, in what scenarios and
where the results go, and drop the placeholder that asked for network
services to be put there.

Two things are worth saying once rather than three times in the group
READMEs: that a scenario is a value of one environment variable rather
than different code, and that a server outside the container has to bind
the address the client dials, since otherwise the reply carries the
service bridge address and UDP fails while TCP passes.

Signed-off-by: Mykola Solianko <mykola_solianko@epam.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant