Skip to content

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