Skip to content

testsuite: add perftest.py to compare two rsync builds' transfer speed#998

Merged
tridge merged 1 commit into
RsyncProject:masterfrom
tridge:pr-perftest
Jun 10, 2026
Merged

testsuite: add perftest.py to compare two rsync builds' transfer speed#998
tridge merged 1 commit into
RsyncProject:masterfrom
tridge:pr-perftest

Conversation

@tridge

@tridge tridge commented Jun 10, 2026

Copy link
Copy Markdown
Member

A standalone dev tool (run directly, not via runtests.py) for catching performance regressions between rsync releases. Given two rsync binaries it builds one deterministic test tree -- heavy-tailed file sizes, a directory spine, symlinks, hard links and a spread of permission modes, modelled on the gentestdata generator -- then runs the two binaries ALTERNATELY for N loops, timing each transfer, and reports the mean and standard deviation per binary.

Each loop times a full copy into an emptied destination and an incremental no-op against an already-synced one (rsync's scan/file-list/stat overhead, where many regressions hide); --mode selects. The first run of each binary is dropped to reduce page-cache impact, the run order alternates to cancel drift, and a B-vs-A slowdown is flagged only when it exceeds the run-to-run noise.

A standalone dev tool (run directly, not via runtests.py) for catching
performance regressions between rsync releases.  Given two rsync binaries it
builds one deterministic test tree -- heavy-tailed file sizes, a directory
spine, symlinks, hard links and a spread of permission modes, modelled on the
gentestdata generator -- then runs the two binaries ALTERNATELY for N loops,
timing each transfer, and reports the mean and standard deviation per binary.

Each loop times a full copy into an emptied destination and an incremental
no-op against an already-synced one (rsync's scan/file-list/stat overhead,
where many regressions hide); --mode selects.  The first run of each binary is
dropped to reduce page-cache impact, the run order alternates to cancel drift,
and a B-vs-A slowdown is flagged only when it exceeds the run-to-run noise.
@tridge tridge merged commit 8b04290 into RsyncProject:master Jun 10, 2026
15 checks passed
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