Matte charcoal load controller with one orange status light: load driven into a system under test
Services / QA / Testing
QA / TESTING

AI Performance Engineering

Load, stress, and scalability testing for AI systems, measured the way the engine actually fails, and verified so the answers are still right when the box is full.

THE PROBLEM

Why AI systems break differently

Streaming splits response time

Streaming splits "response time" into time to first token and inter-token latency; averaging them hides both.

Cost varies by an order of magnitude

Cost per request varies by an order of magnitude with prompt and output length; uniform test payloads produce fiction.

Saturation is a cliff

Saturation is a cliff, not a slope: GPU memory for the KV cache fills nonlinearly, so the system is fine at one concurrency level and failing a few users later.

Tails and time

p95 and p99 matter more than medians, and soak runs expose memory growth that short runs never show.

These are measurable. They are just not measured by requests per second.

METHOD

Two layers, one report

Layer 1: application path (your load tool)

Scripts that drive the application the way users or upstream systems do, including streaming responses (server-sent events), with time to first token, per-token latency, and tokens per second captured per virtual user. We work in the load tool you already run: OpenText LoadRunner, Tricentis NeoLoad, Apache JMeter, Grafana k6, Gatling, or similar. If you have none, we bring the tooling.

Layer 2: inference path (AIPerf + engine metrics)

Direct benchmarking of the serving endpoint with NVIDIA AIPerf, correlated with the engine's own metrics (vLLM, llama.cpp, or the client's stack): TTFT, inter-token latency, tokens per second, request queueing, and KV-cache pressure.

Why both: the application path shows what users experience and where the app stack adds latency; the inference path shows where the model and hardware actually run out. One without the other produces a number nobody can act on.

DEPLOYMENT

Four Walls: nothing leaves your network

The load generator, the prompt corpus, every captured response, and the results database run on your network, on your hardware, with your load tool. No traffic to a SaaS load platform, no prompts in a vendor's cloud, no results exported for analysis. This is how we already run performance testing for regulated clients: the same tooling, the same discipline, pointed at the model instead of the EHR.

Who it is for: hospitals and research institutions, defense and government, finance, and any team running private models because the data cannot leave.

Second track: For applications built on hosted APIs, we run a cloud-API track with rate limits and cost per run modeled into the plan. Four Walls is the default we lead with; cloud API is the option.

VALIDATION AT SCALE

Verified Under Load

Speed is half the answer. Under load, AI systems fail quietly: answers truncate, timeouts return partial results, OCR skips pages when the queue backs up, a de-identifier leaks an entity it caught at low volume, an agent drops a step. Verified Under Load means we measure throughput and latency AND we inspect the outputs the system produced during the run, automatically, for exactly those failure modes. For regulated work the default is one hundred percent of a defined slice of the output; sampling is used only when the client chooses it, and it is stated as such in the report.

WHAT YOU GET
  • [·]A per-run evidence report (pass, fail, quarantine counts by failure mode).
  • [·]The load level at which output quality starts to degrade, alongside the load level at which latency does.
  • [·]The independence rule stated in writing (the checker never shares a model or a code path with the system under test).
DELIVERABLES

What you walk away with

IN THE REPORT
  • [·]Throughput and latency curves per concurrency step (TTFT, ITL, tokens per second, p50/p95/p99).
  • [·]The breakpoint: where latency, error rate, or output quality crosses the SLO, and which resource ran out first.
  • [·]Sizing: the hardware count range for the target volume, with cost per unit of throughput.
  • [·]The evidence report from Verified Under Load.
  • [·]A written recommendation in plain language for the people who sign.
ENGAGEMENT

How an engagement runs

01
Define
Volume targets, prompt or document corpus sampled from production, pass criteria, SLOs.
02
Build
Load scenarios in your tool and AIPerf profiles; warm-cache and cold-cache variants.
03
Run
Ramp, sustained load, burst, soak (long enough to expose memory growth), and breakpoint search with fine steps near saturation.
04
Verify
Automated inspection of outputs from the runs (Verified Under Load).
05
Report
Curves, breakpoints, sizing, and the evidence report, with a recommendation the client can put in front of leadership or procurement.
TOOLING

Built on what you already run

The application path runs in the load tool your team already knows. LoadRunner, NeoLoad, JMeter, k6, and Gatling can all drive streaming LLM endpoints and capture time to first token, per-token latency, and tokens per second; we script in whichever one you own, and we bring the tooling when you have none. On the inference side we use NVIDIA AIPerf and the serving engine's own metrics, the tools your platform team will recognize.

If you are on OpenText LoadRunner or Performance Center, we operate and resell it; see OpenText DevOps Cloud Services.

Performance engineering on hospital and enterprise systems since 2000LoadRunner and Performance Center operated for clients continuously since 2014Test automation practice across regulated environmentsOpenText partner and reseller
FAQ

Straight answers

Is this the same as LLM evaluation or "evals"?
No. Evals score model quality on a benchmark set. We measure how the system behaves at volume, and whether its outputs hold up under that volume.
Can you test a model we host ourselves?
Yes; that is the primary case. See Four Walls.
Can you test an application built on a hosted API?
Yes, on the cloud-API track, with rate limits and cost per run modeled in.
Do we need LoadRunner?
No. We work in whatever load tool you already run: LoadRunner, NeoLoad, JMeter, k6, Gatling, or similar. If you have none, we bring the tooling, or use AIPerf alone for the inference layer.
How long does a first engagement take?
Scoped per system; the first run typically reports within weeks, not quarters.
// Start with the number you do not have

Start with the number you do not have

Bring us the system and the volume you need it to survive. We will scope the first run, tell you what it will measure, and put a date on the report.

How we prove it first
contact@proticom.com
844.PROTICOM
proticom.ai
»   REAL AI · PRODUCTION GRADE · NO HYPE