What is p95 LLM latency, and how do you track it in Metabase?
Definition
p95 LLM latency is the response time that 95% of LLM calls beat — the tail experience your slowest twentieth of users actually get. LLM latency distributions are stretched far right by long completions, retries, and cold paths, so percentiles, not averages, are the only honest way to report them.
What data do you need?
- Trace-grain durations (started_at, duration_ms) per model and app, or
- Rollups with pre-aggregated p50/p95/p99 columns per window
- Time-to-first-token separately, where streaming is used
- Retry flags so tail latency can be attributed to retries vs. slow single calls
SQL pattern
SELECT
model,
date_trunc('week', started_at) AS week,
COUNT(*) AS calls,
ROUND(percentile_cont(0.5) WITHIN GROUP (ORDER BY duration_ms))
AS p50_ms,
ROUND(percentile_cont(0.95) WITHIN GROUP (ORDER BY duration_ms))
AS p95_ms
FROM llm_traces
WHERE environment = 'production'
AND status = 'success'
GROUP BY model, 2
ORDER BY 2, p95_ms DESC;Common pitfalls
Where does this metric apply?
This metric commonly uses data from Langfuse traces, Arize Phoenix spans, W&B Weave traces, Helicone request logs, plus any warehouse models that provide the same grain of LLM usage data.
Related
Dashboards
Integrations
Metrics
Analytics
FAQ
How do you measure p95 latency for LLM calls in Metabase?
percentile_cont(0.95) over durations grouped by model and week — tracing tools like Langfuse and Arize Phoenix export the needed timestamps. From rollups, store p95 pre-aggregated per window and read it at that grain; percentiles can't be recombined afterwards.