From 8b5dcc8d813c0c08202f232ff68c4eaef4e2d14f Mon Sep 17 00:00:00 2001 From: narmstrong-berry Date: Wed, 21 Oct 2026 06:09:32 +0000 Subject: [PATCH] feat(loadtest): sustained-250 workload --- litellm-rust/loadtest/README.md | 2 +- .../loadtest/workloads/sustained-250.json | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 litellm-rust/loadtest/workloads/sustained-250.json diff --git a/litellm-rust/loadtest/README.md b/litellm-rust/loadtest/README.md index 52e3e10157b..16c5fd3b73c 100644 --- a/litellm-rust/loadtest/README.md +++ b/litellm-rust/loadtest/README.md @@ -16,7 +16,7 @@ machines. | `s3stub` | In-memory path-style S3 (PUT, GET, ListObjectsV2) for the `s3_v2` logs of a full-feature run. Objects are stored compressed and listed from a sorted index, so millions of logs fit. | Workloads live in `workloads/`: `smoke`, `realistic-ramp`, `long-streams`, `large-context`, -`key-churn` and `soak`. `sustained-100`, `sustained-500` and `sustained-1000` hold one rate for +`key-churn` and `soak`. `sustained-100`, `sustained-250`, `sustained-500` and `sustained-1000` hold one rate for 15 minutes with evenly spaced arrivals and smoke's request mix over every model group; `sustained-check` runs the same mix at 100, 500 and 1,000 rps for 2 minutes each, to check that the client, mock and stack hold 1,000 rps before the long runs. diff --git a/litellm-rust/loadtest/workloads/sustained-250.json b/litellm-rust/loadtest/workloads/sustained-250.json new file mode 100644 index 00000000000..64d43648e80 --- /dev/null +++ b/litellm-rust/loadtest/workloads/sustained-250.json @@ -0,0 +1,20 @@ +{ + "name": "sustained 250 rps for 15 minutes, evenly spaced arrivals, smoke's request mix over every model group", + "stages": [{"duration_s": 900, "rps": 250}], + "arrivals": "constant", + "nonstream_max_s": 360, + "warmup_s": 60, + "max_in_flight": 30000, + "keys": {"file": "out/keys.txt", "zipf_s": 0}, + "models": {"chat": {"prefix": "gpt-6-astra-", "count": 10}, "messages": {"prefix": "claude-opus-5-5-", "count": 10}}, + "classes": [ + {"name": "chat", "weight": 1, "endpoint": "chat", "stream_fraction": 0.5, + "context_tokens": {"dist": "loguniform", "min": 10000, "max": 50000}, + "ttft_ms": {"dist": "uniform", "min": 200, "max": 800}, + "duration_s": {"dist": "uniform", "min": 1, "max": 5}}, + {"name": "messages", "weight": 1, "endpoint": "messages", "stream_fraction": 0.5, + "context_tokens": {"dist": "loguniform", "min": 10000, "max": 50000}, + "ttft_ms": {"dist": "uniform", "min": 200, "max": 800}, + "duration_s": {"dist": "uniform", "min": 1, "max": 5}} + ] +}