1. 개요
goodput 은 SLA 를 지킨 요청만 센 처리량이다. 늦게 끝난 요청은 끝났더라도 실패로 보고 뺀다.
처리량(throughput)은 서버가 단위 시간에 끝낸 양이다. 초당 출력 토큰 수나 초당 끝낸 요청 수로 센다. 처리량만 보면 요청을 더 받을수록 좋아 보이지만, 사용자 입장에서 30초 걸린 답은 성공이 아니다. goodput 은 이 차이를 숫자로 드러낸다.
2. 처리량과의 차이
처리량은 끝낸 요청을 모두 세고, goodput 은 SLA 를 지킨 요청만 센다
3. 정의
DistServe 논문은 goodput 을 **“SLO 달성률 목표(예: 90%)를 지키며 처리할 수 있는 최대 요청 속도”**로 정의한다. SLO 는 보통 TTFT 와 ITL 의 백분위수로 적는다.
4. 쓰는 곳
서빙 설정(모델, 배치 크기, GPU 수)을 비교할 때 처리량이 아니라 goodput 이 큰 쪽을 고른다.
| 동시 요청을 늘리면 | |
|---|---|
| 처리량 | 계속 오르거나 평평해진다 |
| goodput | SLA 를 넘는 순간부터 떨어진다 |
5. 여담
- goodput 이라는 말은 LLM 보다 훨씬 오래됐다. 네트워크 분야에서 재전송되거나 잃어버린 데이터를 빼고 실제로 쓸모 있게 전달된 양을 가리키는 말로 써 왔다.1
- LLM 서빙에서는 DistServe(2024) 같은 연구가 “요청은 많이 끝냈는데 다 늦었다"는 문제를 이 말로 정리했다.
6. 관련 문서
- Concurrency — 처리량이 평평해지고 지연이 꺾이는 지점
- Percentile — SLA 를 적는 방법
7. 출처
- Zhong et al., DistServe: Disaggregating Prefill and Decoding for Goodput-optimized Large Language Model Serving (arXiv 2401.09670)
- NVIDIA — LLM Inference Benchmarking: Fundamental Concepts
- RFC 2647 — Benchmarking Terminology for Firewall Performance, 3.17 Goodput
예를 들어 RFC 2647(1999)은 방화벽 성능 용어로 goodput 을 “올바른 목적지로 전달된 비트에서 잃어버리거나 재전송된 비트를 뺀 양"으로 정의한다. ↩︎