From 00e137be3913b71f1a4d02d5eba0fd8bf5b1691d Mon Sep 17 00:00:00 2001 From: not-matthias Date: Tue, 29 Sep 2026 18:26:56 +0200 Subject: [PATCH 1/2] perf(memtrack): drop the teardown-dominated ls benchmark The ls workload finishes quickly, while allocator-uprobe teardown accounts for most of the measured command time and its variation. Remove it from the walltime matrix instead of treating kernel grace-period latency as memtrack throughput. --- .github/workflows/ci.yml | 2 +- crates/memtrack/benchmarks/ls.yml | 17 ----------------- 2 files changed, 1 insertion(+), 18 deletions(-) delete mode 100644 crates/memtrack/benchmarks/ls.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 95c9bb146..514b7d028 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -160,7 +160,7 @@ jobs: matrix: # Both physical variants of a workload live in the same file, so they # are measured back to back. - workload: [ls, dd, tar] + workload: [dd, tar] env: CODSPEED_REV: ${{ github.event.pull_request.head.sha || github.sha }} CARGO_TARGET_DIR: ${{ github.workspace }}/target diff --git a/crates/memtrack/benchmarks/ls.yml b/crates/memtrack/benchmarks/ls.yml deleted file mode 100644 index de789b0b1..000000000 --- a/crates/memtrack/benchmarks/ls.yml +++ /dev/null @@ -1,17 +0,0 @@ -$schema: https://raw.githubusercontent.com/CodSpeedHQ/codspeed/refs/heads/main/schemas/codspeed.schema.json - -# Each tracked run pays a fixed BPF load + uprobe attach cost, so the default -# 1s warmup / 3s max budgets fit only a handful of rounds. -options: - warmup-time: "5s" - max-time: "60s" - -benchmarks: - # Read-only, low-allocation baseline. The tracked command string is run - # through `bash -c`, so output can be redirected away: otherwise every round - # dumps the whole listing into the runner log. - - name: "memtrack track ls" - exec: env CODSPEED_MEMTRACK_TRACK_PHYSICAL=0 codspeed-memtrack track "ls -la /usr/bin > /dev/null" --output /tmp/codspeed-memtrack-bench - - - name: "memtrack track ls (with physical)" - exec: env CODSPEED_MEMTRACK_TRACK_PHYSICAL=1 codspeed-memtrack track "ls -la /usr/bin > /dev/null" --output /tmp/codspeed-memtrack-bench From 407b28ea17bb0db382b9972ee286e37bce87d237 Mon Sep 17 00:00:00 2001 From: not-matthias Date: Tue, 29 Sep 2026 18:26:57 +0200 Subject: [PATCH 2/2] perf(memtrack): warm up tar for several complete rounds The previous five-second budget allowed only one warmup round. An unusually fast first measured round could then determine the reported minimum. Increase warmup to thirty seconds while retaining the real archive and the existing sixty-second measurement budget. --- crates/memtrack/benchmarks/tar.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/memtrack/benchmarks/tar.yml b/crates/memtrack/benchmarks/tar.yml index f259ecf5e..d96a5bdfa 100644 --- a/crates/memtrack/benchmarks/tar.yml +++ b/crates/memtrack/benchmarks/tar.yml @@ -3,7 +3,7 @@ $schema: https://raw.githubusercontent.com/CodSpeedHQ/codspeed/refs/heads/main/s # Each tracked run pays a fixed BPF load + uprobe attach cost, so the default # 1s warmup / 3s max budgets fit only a handful of rounds. options: - warmup-time: "5s" + warmup-time: "30s" max-time: "60s" # The archive is pre-created by CI before measurement: a first-time multi-GB