1. 개요

goodput 은 SLA 를 지킨 요청만 센 처리량이다. 늦게 끝난 요청은 끝났더라도 실패로 보고 뺀다.

처리량(throughput)은 서버가 단위 시간에 끝낸 양이다. 초당 출력 토큰 수나 초당 끝낸 요청 수로 센다. 처리량만 보면 요청을 더 받을수록 좋아 보이지만, 사용자 입장에서 30초 걸린 답은 성공이 아니다. goodput 은 이 차이를 숫자로 드러낸다.

2. 처리량과의 차이

#1지킴#2지킴#3늦음#4지킴#5지킴#6늦음#7지킴#8늦음#9지킴#10늦음1초 동안 끝난 요청처리량 = 10 요청/초goodput = 6 요청/초서비스가 약속하는 것은 goodput — 요청을 더 받아 처리량이 올라도 늦은 요청이 늘면 goodput 은 떨어진다
처리량은 끝낸 요청을 모두 세고, goodput 은 SLA 를 지킨 요청만 센다

3. 정의

DistServe 논문은 goodput 을 **“SLO 달성률 목표(예: 90%)를 지키며 처리할 수 있는 최대 요청 속도”**로 정의한다. SLO 는 보통 TTFT 와 ITL 의 백분위수로 적는다.

4. 쓰는 곳

서빙 설정(모델, 배치 크기, GPU 수)을 비교할 때 처리량이 아니라 goodput 이 큰 쪽을 고른다.

동시 요청을 늘리면
처리량계속 오르거나 평평해진다
goodputSLA 를 넘는 순간부터 떨어진다

5. 여담

  • goodput 이라는 말은 LLM 보다 훨씬 오래됐다. 네트워크 분야에서 재전송되거나 잃어버린 데이터를 빼고 실제로 쓸모 있게 전달된 양을 가리키는 말로 써 왔다.1
  • LLM 서빙에서는 DistServe(2024) 같은 연구가 “요청은 많이 끝냈는데 다 늦었다"는 문제를 이 말로 정리했다.

6. 관련 문서

  • Concurrency — 처리량이 평평해지고 지연이 꺾이는 지점
  • Percentile — SLA 를 적는 방법

7. 출처


  1. 예를 들어 RFC 2647(1999)은 방화벽 성능 용어로 goodput 을 “올바른 목적지로 전달된 비트에서 잃어버리거나 재전송된 비트를 뺀 양"으로 정의한다. ↩︎