A year of LLM trafficloading…
–requests
–input tokens / request
–output tokens / request
–s to first token

Technical notes

Technical notes: data source, aggregation and limitations

Data source

A year of production traffic from Chutes, a public LLM inference platform, released by researchers from Harvard, the University of Chicago and Chutes with the paper A Year in LLM Serving: Workload Evolution, Caching and Load-Balancing (data and code: github.com/HarvardMadSys/chutes_workload). The original trace is one row per request: 6.12 billion requests across 9,174 models in a 91 GB Parquet file. All credit for the dataset goes to its authors.

Aggregation

The data passes through two exact rollups. Neither one samples, so the totals match the original trace.

  1. Hour × model × function (1.34 million rows): for each hour, model and API function, the number of requests, plus the sum and the count of recorded values for input tokens, output tokens and time to first token. Models outside the 200 busiest are grouped together.
  2. Day × hour × family × model type × call type × streaming (396,205 rows, the file this page loads): the same sums and counts added up again. Individual models are left out (some are anonymized ids), and the families outside the top five are grouped as Other.

Every average on this page is a ratio of sums: the sum of a measure divided by the number of requests that recorded it, for example average time to first token = sum(ttft_seconds) / sum(ttft_n). That keeps averages correct under any filter. Averaging the rows themselves would give an hour with one request the same weight as an hour with two million.

SELECT DATE '2025-04-11' + dnum AS date, hod AS hour, family, model_type, call_type, streaming,
       sum(reqs) AS requests,
       sum(sum_it) AS input_tokens,  sum(n_it) AS input_n,
       sum(sum_ot) AS output_tokens, sum(n_ot) AS output_n,
       sum(sum_ttft) AS ttft_seconds, sum(n_ttft) AS ttft_n
FROM chutes.parquet GROUP BY ALL

The charts query this file in your browser with DuckDB-WASM and are drawn with D3. Mosaic links them, so every filter you set re-runs each chart's SQL against the same data. The family-month and month-hour reels keep the whole period and dim months outside the chosen dates; the hour reel and the numbers in the top bar follow every filter. A family filter applies everywhere.

Reading the charts

Definitions

Limitations

Source: Chutes LLM serving trace, 11 Apr 2025 – 12 Apr 2026 (arXiv:2608.13573). Averages are per request that recorded the value. Built with DuckDB-WASM, Mosaic, D3 and d3-3d; icons from Tabler.