개요
Throughput은 특정 단위 시간동안 처리하는 양을 말하며, Latency는 하나의 작업을 처리하는 동안 걸리는 시간을 말한다. Throughput은 Higher is better이고 Latency는 Lower is better이다.
예를 들어서, 하루동안 먹는 양은 Throughput이고 (kg/day)이고 식사시간은 Latency이다.
좀더 컴퓨터 과학으로 설명하면... File하나를 쓰는데 걸리는 시간은 Latency이며, 10초동안 쓰는 양은 Throughput이다.
Latency와 Throughput의 중요한 차이중에 하나가 바로 Latency는 Tail latency가 존재한다는 사실이다. 따라서 Latency는 이 Tail을 고려해야 하기 때문에 일반적으로 Throughput보다 Optimizing하기 더 어렵다.
경향
- Throughput의 증가는 Latency와는 상관없다. 예를 들어서 배칭은 처리속도는 증가시키지만 각각의 Latency는 떨어지는 영향을 준다.
- Latency가 올라가면 Throughput은 떨어지는 경향성이 있다.
Optimization
- Latency의 성능향상을 위해서 Bottleneck을 찾고 그 바틀넥을 극복하는 것이다. 특히 Latency는 내가 처리하고자 하는 일이 주어진 시간안에 처리가능한지 아니면 수상한 Overhead가 있는지를 잘 파악하여야 한다. Latency 101참고.
- Throughput의 성능향상은 Data path를 이해하고 불필요한 Data path는 없는지, Batching을 통해서 처리할 수 있는 일이 있는지와 같이 전반적인 알고리즘과 구현에 영향을 받는다. Latency와 마찬가지로 어느 Data path에서 느려지는지, 알고리즘의 개선을 가능하지 않은지와 같은 요소들을 파악하여야 한다.