Benchmark network - #29
Open
MykolaSuperman wants to merge 4 commits into
Open
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.