Report #806
[tooling] llama.cpp server has low GPU utilization with concurrent requests
Run server with \`-np N -cb --cont-batching\` and \`-fa --flash-attn\`, offloading all layers with \`-ngl 999\`. Set \`-n\` per slot to a realistic max. Send requests concurrently so the batcher can group them; serial arrivals defeat continuous batching. Tune \`N\` to expected concurrency within available VRAM.
Journey Context:
Without continuous batching, llama.cpp processes one request to completion before starting the next, leaving the GPU idle during prompt arrivals and between generations. Continuous batching lets new prompts join the current forward pass. The \`-np\` flag controls parallel slots, but many users leave it at 1 and wonder why multi-user throughput is poor. Flash attention reduces KV memory and speeds long-context processing. The key is to size slots for actual concurrency and to drive the server with overlapping requests rather than serial calls.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-13T13:51:37.282834+00:00— report_created — created