Latency Numbers Programmer Should Know: Crash Course System Design #1
TLDR: 작업마다 나노초에서 초에 이르기까지 상대적인 지연 시간이 크게 다릅니다.
1. 정확한 수치보다 상대적인 지연 시간 차이를 이해하는 것이 더 중요합니다.
1.1 나노초 미만에서 초에 이르는 지연 시간 간의 상대적 차이를 직관적으로 이해하는 것이 정확한 수치를 아는 것보다 더 중요합니다.
2. CPU 레지스터에 액세스하는 속도는 매우 빠르지만 일부 작업은 최대 20번의 CPU 클럭 사이클이 소요될 수 있습니다.
2.1 CPU 레지스터 액세스는 나노초 미만, L1 및 L2 캐시 액세스는 1~10ns 범위이며 일부 고비용 CPU 작업의 경우 최대 20회의 CPU 클럭 사이클이 소요될 수 있습니다.
3. CPU에서 메인 메모리에 액세스하는 것은 레지스터에 액세스하는 것보다 수백 배 더 느리며 Linux에서 시스템 호출을 하는 데 수백 나노초가 걸립니다.
3.1 최신 CPU의 메인 메모리 액세스는 CPU 레지스터 액세스보다 수백 배 느리며 Linux에서 간단한 시스템 호출을 수행하는 데 수백 나노초가 걸립니다.
4. Linux 스레드 간 전환과 64KB 메모리 복사 모두 몇 마이크로초가 걸립니다.
4.1 Linux 스레드 간 컨텍스트 전환에는 최소 수 마이크로초가 걸리며, 한 메인 메모리 위치에서 다른 메인 메모리 위치로 64KB를 복사하는 데도 수 마이크로초가 걸립니다.
5. 메인 메모리에서 읽는 속도가 SSD보다 5배 빠릅니다.
5.1 메인 메모리에서 1MB의 데이터를 순차적으로 읽는 데 50마이크로초가 걸리는 반면, SSD 읽기 지연 시간은 100마이크로초, 쓰기 지연 시간은 1밀리초에 가까워집니다.
6. 💻 영역 내 네트워크 RTT는 ~200μs, 영역 간 RTT는 1~10ms, HDD 탐색 시간은 5ms입니다.
6.1 최신 클라우드 제공업체의 영역 내 네트워크 왕복 시간은 수백 마이크로초, 영역 간 네트워크 왕복 시간은 1~10ms, 하드 디스크 드라이브 검색 시간은 5ms입니다.
7. 비밀번호를 암호화하는 데는 TLS 핸드셰이크보다 시간이 더 오래 걸립니다.
7.1 B암호화는 300ms가 걸리는 반면, TLS 핸드셰이크는 일반적으로 기계 간 거리에 따라 250-500ms가 걸립니다.
8. 8. 📡 동일한 클라우드 리전 내에서 1GB를 전송하는 데 약 10초가 소요됩니다.
8.1 동일한 클라우드 리전 내에서 네트워크를 통해 1GB를 전송하는 데 약 10초가 소요됩니다.