Skip to content

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

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
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information