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 SizeThroughput
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

FlagDefaultDescription
--qps10Maximum queries per second
--max-concurrency10Maximum concurrent executions
--duration30sDuration to run the benchmark
-p, --parametersParameters as key=value pairs
--client-qps100Kubernetes client QPS limit
--client-burst200Kubernetes 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.