Benchmark: Gitaly with Transactions
Objective
Benchmark Gitaly with Transactions enabled.
Scope
- Baseline: Gitaly on standard EXT4 without Transactions
- Gitaly with Transactions enabled on EXT4
- 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.
Configuration inside config.yml :
Within the gitaly instance block declare the following
config:
# Whether transactions should be enabled.
transactions: 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)
- Cache state:
- Cold-cache (drop_caches) vs steady-state warm cache
Documentation Requirements
- Follow the 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
- Artifact bundle per run: raw results (JSON/CSV), system profile, flamegraphs
- Summary published to this issue with links to artifacts
Edited by Emily Chui