1. 성능 관련 사이트 소개
성능 관련하여 요새 이런저런 자료들을 찾아보고 있습니다. 그러던 와중 Programmer(SW engineer)가 알아야 할 서버 동작 별 지연 시간(Latency Numbers)
와 관련된 내용을 알게 되었습니다. 2010년 Google의 Jeff Dean 은 Stanford에서 컴퓨팅 시스템과 관련된 숫자에 대하여 설명하였습니다.. 이후, Colin Scott이라는 엔지니어가 자신의 github에 이 수치를 정리하여 아래와 같이 올려놓게 되었습니다.
https://colin-scott.github.io/personal_website/research/interactive_latency.html 에 들어가면 이러한 데이터를 시각화한 자료를 확인할 수 있습니다.
실제 성능은 위와 같이 나타나게 되는데요. 원하는 연도를 마음대로 지정할 수 있는데, 2000, 2010, 2020의 수치를 비교해보니 2000년도와 2010년도는 확실히 Computer 성능이 증가하는 것이 보이네요. 하지만 2010년도 이후로는 크게 수치가 증가하는 것처럼 보이지는 않습니다.
2. 실제 성능 정리
동작 | 성능 |
---|---|
L1 캐시 참조 (L1 cache reference: 1ns) | 1ns |
CPU 분기 오예측 (Branch mispredict) | 3ns |
L2 캐시 참조 (L2 cache reference: 4ns) | 4ns |
뮤텍스 잠금/해제 (Mutex lock/unlock: 17ns) | 17ns |
주 메모리 / DRAM 참조 (Main memory reference) | 100ns |
Zippy(현재 Snappy)로 1KB 압축 (Compress 1KB wth Zippy) | 2000ns 또는 2μs |
상품 네트워크를 통해 2000바이트 보내기 (Send 2,000 bytes over commodity network) | 44ns |
솔리드 스테이트 드라이브(SSD) 랜덤 읽기 (SSD random read) | 16μs |
주 메모리에서 순차적으로 1,000,000바이트 읽기 (Read 1,000,000 bytes sequentially from memory) | 3μs |
동일한 데이터 센터에서 왕복 네트워크 요청 (Round trip in same datacenter) | 500μs |
SSD에서 순차적으로 1,000,000바이트 읽기 (Read 1,000,000 bytes sequentially from SSD) | 49μs |
디스크(하드 드라이브/자기 드라이브) 탐색 (Disk seek) | 2ms |
디스크에서 순차적으로 1,000,000바이트 읽기 (Read 1,000,000 bytes sequentially from disk) | 825μs |
위의 데이터 표를 살펴보면 대략적인 성능에 대하여 알 수 있습니다. 캐시 레지스터, DRAM, SSD 속도가 어마어마하게 차이가 나는 것을 확인할 수 있습니다.
캐시 1ns –(x100)–> DRAM 100ns –(x1600)–> 16μs
이러한 점들을 고려하여 향후 시스템 설계를 효율적으로 진행하는데 사용하면 좋을 것 같습니다.
reference