CPU 사용률이 100%라고 해서 시스템의 연산 자원이 완전히 활용되고 있다고 생각하면 오산입니다. 실제로는 실행할 작업이 있어도 CPU가 메모리에서 데이터를 가져오기를 기다리느라 연산을 진행하지 못하는 경우가 빈번합니다. 이는 현대 CPU의 연산 속도가 DRAM(주기억장치) 접근 속도보다 훨씬 빠르기 때문에 발생하는 현상으로, 데이터베이스와 같은 고성능 시스템에서 중요한 병목 지점이 됩니다.
현대 CPU는 1나노초(ns)에 약 4~8개의 명령을 처리할 수 있는 반면, DRAM 접근에는 약 50~100나노초가 소요됩니다. 이는 CPU가 RAM 접근 한 번을 기다리는 동안 400~800개의 명령을 처리할 수 있다는 의미입니다. 이러한 속도 차이를 줄이기 위해 CPU는 L1, L2, L3 캐시(cache)를 사용하지만, 캐시 용량은 제한적입니다. 한 실험에서 1,700만 개의 고유 키를 집계하는 단일 코어 해시 테이블 구현 시, 메모리 대기 지표가 50.1%에 달했고, 재실행 시간은 3.6초였습니다. 하지만 키를 4,096개 파티션으로 나누어 작은 해시 테이블에서 집계하자, 연산량은 늘었음에도 재실행 시간은 2.7초로 줄고 메모리 대기 지표는 23.5%로 크게 낮아졌습니다. 이는 캐시에 없는 데이터에 대한 DRAM 접근을 추가 CPU 연산으로 바꾸는 방식이 효과적임을 보여줍니다.
이러한 최적화는 단순히 CPU 사용률을 높이는 것을 넘어, 실제 작업 처리량을 극대화하는 데 필수적입니다. 데이터베이스나 고성능 컴퓨팅 환경에서 메모리 지연을 줄이는 것은 전체 시스템 성능에 결정적인 영향을 미칩니다. 기수 분할(radix partitioning)과 같은 캐시 친화적 알고리듬을 통해 작업 집합의 크기를 줄여 CPU 캐시 활용도를 높이거나, 프리페칭(prefetching) 및 메모리 처리량을 극대화하는 알고리듬으로 DRAM 지연을 숨기는 것이 중요합니다. 이는 단순히 하드웨어 스펙을 높이는 것보다 소프트웨어 설계 단계에서부터 캐시의 특성을 고려하는 것이 훨씬 효율적인 성능 향상을 가져올 수 있음을 시사합니다.