[TIL] 13 latencies programmers need to know

소프트웨어 엔지니어가 알아야할 13가지 지연시간을 정리해 본다.

구글의 전설적인 엔지니어 제프 딘이 공유한 내용이라고 한다.

지연시간
L1 캐시 참조 0.5ns
분기 예측 오류 5ns
L2 캐시 참조 7ns
뮤텍스 잠금/해제 100ns
메인 메모리 참조 100ns
Snappy로 1KB 압축 10,000ns = 10μs
1Gbps 네트워크를 통한 2KB 전송 20,000 = 20μs
메모리에서 순차적으로 1MB 읽기 250,000ns = 250μs
동일 데이터센터 내 데이터 왕복 500,000ns = 500μs
디스크 탐색 10,000,000ns =10,000μs= 10ms
네트워크에서 순차적으로 1MB 읽기 10,000,000ns = 10,000μs = 10ms
디스크에서 순차적으로 1MB 읽기 30,000,000ns = 30ms
패킷전송 CA → 네덜란드 → CA 150,000,000ns = 150ms

Orders of Magnitude (time)

Factor 1s is…
nanosecond(ns) 10**-9 1,000,000,000ns
microsecond(μs) 10**-6 1,000,000μs
millisecond(ms) 10**-3 1,000ms
second(s) 10**0 1

물론 정확하지는 않다. 속도라는 것이 매번 변화하고 환경에 따라 달라지기 마련이니까.

하지만, guesstimation에는 충분히 도움이 된다.

자주 보고 외워둬야겠다.

그래서 메모한다.