Benchmark: Gitaly with Raft and Transactions
Objective
Benchmark Gitaly with Raft + Transactions enabled.
Scope
- Baseline: Gitaly
- Variant: Gitaly with Raft + Transactions enabled
- Workloads: The current mix of RPCs defined in master's
k6-benchmark.js
is a minimum workload that needs to be run. If additional workloads with different RPCs need to be run, start another report. - EXT4 FS
Configuration:
config:
# Whether transactions should be enabled.
transactions: true
raft: true
Test Matrix
Suggestions:
- 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/Disabled
- Transactions Enabled
- Cache state:
- Cold-cache (drop_caches) vs steady-state warm cache
Documentation Requirements
- Follow standardized 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
- Artifact bundle per run: raw results (JSON/CSV), system profile, flamegraphs
- Summary published to the this issue with links to artifacts
Edited by Emily Chui