Benchmark: Gitaly with Raft, Reftables and Transactions
Objective
Benchmark Gitaly with Raft + Reftabled + Transactions enabled.
Scope
- Baseline: Gitaly
- Variant: Gitaly with Raft + Reftables + Transactions enabled
- Workloads: clone/fetch, push/write (small/large), RPC hot paths, GC/pack, repo create/delete, mixed read/write, concurrency scaling (repos × RPCs)
- EXT4 FS
Configuration:
To be declared in each gitaly instance block
 config:
      # Whether transactions should be enabled.
      transactions: true
      raft: trueTo enable reftables for a specific repo, initialize the test repo within the repositories block in config.yml with
reference_backend: reftableTest Matrix
- Concurrency:
- Repos: 1...5
- Parallel RPCs per repo: 1, 8, 32
 
- Repository shapes:
- Small repos (many loose objects/files)
- Medium repos (Decent number of commits, trees, branches)
- Large monorepos (large packfiles, deep history)
 
- Raft Enabled
- Transactions Enabled
- Reftables Enabled/Disabled
- Cache state:
- Cold-cache (drop_caches) vs steady-state warm cache
 
Documentation Requirements
- Follow standardized results template
Deliverables
- Reproducible benchmark runs using the framework from #6732
- Comparison tables/plots: baseline vs Transactions (per workload and concurrency level)
- Analysis summarizing:
- bottlenecks
- snapshot latencies and impact of files and directories on snapshot performance
- p95 latency per RPC
- impact of large number of refs
 
- Artifact bundle per run: raw results (JSON/CSV), system profile, flamegraphs
- Summary published to this issue with links to artifacts
Edited  by Emily Chui