ci: add memtrack walltime benchmarks to CI - #537
not-matthias wants to merge 3 commits into
Conversation
Merging this PR will not alter performance
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| 🆕 | WallTime | memtrack track tar |
N/A | 9.7 s | N/A |
| 🆕 | WallTime | memtrack track tar (with physical) |
N/A | 9.8 s | N/A |
| 🆕 | WallTime | memtrack track dd |
N/A | 1.3 s | N/A |
| 🆕 | WallTime | memtrack track dd (with physical) |
N/A | 1.5 s | N/A |
| 🆕 | WallTime | memtrack track ls |
N/A | 1.2 s | N/A |
| 🆕 | WallTime | memtrack track ls (with physical) |
N/A | 1.2 s | N/A |
| 🆕 | Memory | memtrack track ls |
N/A | 50.9 MB | N/A |
| 🆕 | Memory | memtrack track ls (with physical) |
N/A | 51 MB | N/A |
| 🆕 | Memory | memtrack track dd |
N/A | 51 MB | N/A |
| 🆕 | Memory | memtrack track dd (with physical) |
N/A | 51.1 MB | N/A |
Comparing cod-3093-memtrack-data-format-improvements (2c36a70) with main (5af022c)
596e932 to
5f67554
Compare
b7adccd to
3efb21e
Compare
|
21ce920 to
829da2f
Compare
GuillaumeLagrange
left a comment
There was a problem hiding this comment.
olgtm, good idea!
|
Memtrack walltime benchmarks took 19m to run, maybe we can shard something before introducing a 20m delay in the CI pipeline? 😇 |
829da2f to
ae11946
Compare
The poll thread sent one item per channel message, and std's mpsc allocates a 31-slot block per 31 messages, so a run that captured 704k events also allocated 22.7k blocks purely to hand them over. The callback now fills a shared 1024-item buffer and sends it whole. Partial batches are flushed after every poll, after the drain-path consume before its ack, and on the shutdown consume, so `drain()` keeps promising that all pending entries sit in the channel once it returns. Consumers take `Vec<T>` and flatten: the encode pipeline keeps its `IntoIterator<Item = MemtrackEvent>` contract unchanged.
036a754 to
808daa7
Compare
Install codspeed-runner and memtrack once via baptiste0928/cargo-install, pointed at a shared cached target directory, and let the runner action handle instrument caching and benchmark execution instead of a separate debug build.
24a3804 to
2c36a70
Compare
Adds a
memtrack-benchmarksCI job that runscodspeed-memtrack trackagainst a few representative workloads (ls,dd,tar), each with RSS-only and RSS+rmap variants, to catch regressions in memtrack's own overhead.Runs both
walltime(execution time) andmemory(memtrack's own peak RSS/allocations while tracking each workload) modes against the samecrates/memtrack/codspeed.ymlconfig.