Performance
Performance depends on the number of API operations that your workflows do. Every new Execution (or child Execution), Suspend, or Job creates additional load on the API server. Typical clusters can handle 10s to 100s of operations per second — larger clusters potentially thousands per second — but kontinue is not designed for insane scalability or millions of executions.
kontinue performance depends heavily on the performance of the backing Kubernetes cluster (and etcd cluster). It is always important to benchmark your own workload to find bottlenecks.
Benchmarks
Synthetic benchmarks show that overhead for trivial Executions is on the order of 1-5ms.
| Cluster Size | Throughput |
|---|---|
| Toy cluster (2 vCPU, co-located control plane and worker) | ~10 Executions/sec (500+ executions/minute) |
| Larger cluster (32 vCPU) | 50-100 Executions/sec |
Benchmarking Your Workload
The kontinue CLI provides a subcommand for running simple benchmarks of your own workloads and reporting throughput and latency characteristics:
kontinue bench <function> [flags]
Flags
| Flag | Default | Description |
|---|---|---|
--qps | 10 | Maximum queries per second |
--max-concurrency | 10 | Maximum concurrent executions |
--duration | 30s | Duration to run the benchmark |
-p, --parameters | Parameters as key=value pairs | |
--client-qps | 100 | Kubernetes client QPS limit |
--client-burst | 200 | Kubernetes client burst limit |
Example
# Benchmark a function at 50 QPS for 1 minute
kontinue bench my-function --qps 50 --duration 1m
# Benchmark with parameters
kontinue bench deploy -p env=staging -p version=1.2.3 --qps 20
This allows you to measure real performance with your specific cluster configuration and execution patterns.