Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

docs: consolidate benchmarks into one file, refresh larger-than-RAM numbers#118

Merged
martinus merged 1 commit into
mastermartinus/oans:masterfrom
docs/consolidate-benchmarksmartinus/oans:docs/consolidate-benchmarksCopy head branch name to clipboard
Jul 24, 2026
Merged

docs: consolidate benchmarks into one file, refresh larger-than-RAM numbers#118
martinus merged 1 commit into
mastermartinus/oans:masterfrom
docs/consolidate-benchmarksmartinus/oans:docs/consolidate-benchmarksCopy head branch name to clipboard

Conversation

@martinus

Copy link
Copy Markdown
Owner

What

The user asked for a single markdown file holding all benchmark information, and for the larger-than-RAM ("2× Linux") dedupe benchmark to be re-run now that the Stage 1+2 dedupe rewrite has landed.

  • Merged docs/benchmarks-low-memory.md into docs/benchmarks.md. The doc now has two clearly-separated scenarios: warm re-runs on a large tree (unchanged) and larger-than-RAM dedupe (refreshed).
  • Re-ran the larger-than-RAM benchmark on merged master and updated every number, table and per-round note.
  • Repointed the five README links (benchmarks-low-memory.mdbenchmarks.md#larger-than-ram-dedupe) and refreshed the README headline figures.

Fresh measurement

Two non-reflinked copies of a Linux kernel git tree (189,546 files / ~10.5 GiB), page cache capped to 4 GiB (MemoryMax=4G MemorySwapMax=0), cold (drop_caches), 10 interleaved rounds.

  • oans: v1.3.0-26-gc20c (master, byte-weighted progress + streaming dedupe pool)
  • duperemove: v0.15.2-2-g897a222 (fork base = upstream 0.15.2)
Metric (median of 10) oans duperemove 0.15.2 advantage
Hash + dedupe (-dr) 13.8 s 179.7 s ~13×
Hash only (-r, in-memory) 7.8 s 9.8 s ~1.3×
Peak RSS (dedupe) 121 MiB 243 MiB ~2×
Peak RSS (hash) 120 MiB 333 MiB ~2.8×
Hashfile 39.7 MiB 70.9 MiB ~1.8×

Both tools reach byte-identical sharing — after each run btrfs filesystem du -s tree reports Total 10.49 GiB / Exclusive 0.00 B / Set-shared 4.75 GiB. oans reports Reclaimed 5.1 GiB across 45626 groups.

Notable vs the previous doc: the dedupe win grew (~11× → ~13×) and oans's dedupe-phase RSS dropped (162 → 121 MiB) thanks to the streaming pipeline — it no longer scales with duplicate groups in flight.

Docs-only; no code changes.

🤖 Generated with Claude Code

…umbers

Merge docs/benchmarks-low-memory.md into docs/benchmarks.md so all
benchmark information lives in a single file with two scenarios: warm
re-runs on a large tree (unchanged) and the larger-than-RAM first-run
dedupe.

Re-ran the larger-than-RAM benchmark (two non-reflinked copies of a
Linux kernel tree = 189,546 files / ~10.5 GiB, page cache capped to
4 GiB, cold, 10 interleaved rounds) on merged master (v1.3.0-26-gc20c,
now with the Stage 1+2 dedupe rewrite) vs upstream duperemove
v0.15.2-2-g897a222:

  hash+dedupe  median  oans 13.8 s  vs  duperemove 179.7 s  (~13x)
  peak RSS (dedupe)    oans 121 MiB vs  243 MiB  (~2x; streaming pool)
  hashfile             oans 39.7 MiB vs 70.9 MiB (~1.8x)

Both tools reach byte-identical sharing (btrfs fi du -s: Exclusive 0 B,
Set-shared 4.75 GiB). Repointed the five README links and refreshed the
headline numbers (~11x/14 s vs 155 s -> ~13x/13.8 s vs 179.7 s).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@martinus
martinus merged commit 223ab2d into master Jul 24, 2026
6 checks passed
@martinus
martinus deleted the docs/consolidate-benchmarks branch July 24, 2026 12:01
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

Morty Proxy This is a proxified and sanitized view of the page, visit original site.