Multi-phase workflows allow you to define an ordered sequence of load windows within a single benchmark run. This is useful for scenarios like cache warmup, baseline profiling, stress testing (e.g., cancellation storms), and recovery monitoring.
Each phase in the phases list requires a name and a kind.
name: A unique identifier used for logs, artifact directories, and sweep paths. Must follow the regex ^[A-Za-z_][A-Za-z0-9_-]*$.kind: Defines the semantic role of the phase:warmup: These phases are excluded from aggregate profiling results. Use these for cache priming or system settling.profiling: These phases contribute to the benchmark results. A workflow must contain at least one profiling phase.
Note on Canonical Names: If you name a phase warmup, its kind defaults to warmup. If you name it profiling, its kind defaults to profiling. For any other name, you must explicitly set the kind field.
benchmark:
phases:
- name: warmup
type: concurrency
concurrency: 8
duration: 5m
- name: baseline_traffic
kind: profiling
type: concurrency
concurrency: 32
duration: 30m
- name: cancellation_stress
kind: profiling
type: concurrency
concurrency: 64
duration: 5m
cancellation: {rate: 50, delay: 0}