Problems / LLM serving, medium

Background agents starve the chat

One GPU pool with 64 slots serves interactive chat (30 requests a second) and a background agent that triages every ticket: 10 tasks a second, 8 model calls each. Nothing limits how many background tasks run at once.

Unlock it once for 15 credits; everything inside it is free (runs, changes, Submit, results, hints). Sign in with Google to start; new accounts get free credits.

Your goals

Chat success ≥ 99% and p99 ≤ 2 s; background tasks still finish.

Test cases

Like a coding problem, a solution has to pass every case, not just the one it was built for. Submit in the lab runs all 5; 2 of them are hidden until then.

  1. As given. The problem’s own traffic, scheduled failures and seed.
  2. Peak hour. 25% more traffic than the problem states, with the same failures.
  3. A server dies. One replica of the service with the most replicas is killed for part of the run.

The traffic

40 requests a second for 45 seconds: 75% chat (reads), 25% background (writes).

The system

What each component does in this design, and what calls it. The simulator mimics each one from these settings.

ComponentIts job hereSettings
Load balancerLoad balancerTraffic enters here.Calls Chat API, Background job API.Layer 4 balancers route by IP and port; layer 7 balancers read HTTP and can route by path or header.–
Chat APIApp serviceLoad balancer forwards to it for /chat.Calls GPU serving pool.Little's law: throughput ≈ concurrency ÷ latency. 200 slots at 50 ms serve about 4,000 req/s.3 replicas × 500 slots · timeout 2.0 s
Background job APIApp serviceLoad balancer forwards to it for /background.Calls Ticket-triage agents.Little's law: throughput ≈ concurrency ÷ latency. 200 slots at 50 ms serve about 4,000 req/s.3 replicas × 500 slots · timeout 180 s
Ticket-triage agentsAgent orchestratorBackground job API calls it.Calls GPU serving pool.An agent loops: think, call a tool, read the result, repeat until done.2000 slots · 8 steps
GPU serving poolSelf-hosted serving poolChat API calls it. Ticket-triage agents calls it.GPU servers batch requests together; throughput rises with batch size until memory runs out.64 slots

More llm serving problems