malloc() 알고리즘 비교 분석
원제 Comparison of Malloc() Algorithms
105 포인트댓글 29
Key Point
멀티스레드 프로그램의 메모리 할당 성능을 크리티컬하게 좌우하는 malloc 알고리즘의 구조와 장단점을 체계적으로 비교하므로, 고성능 시스템 설계 시 올바른 할당자 선택이 필요하다.
핵심 요약
- 멀티스레드 프로그램에서 메모리 할당/해제는 힙 경합으로 인해 병목이 되며, 스레드·프로세서 수 증가에 따라 오히려 성능이 저하된다.
- malloc() 발전 과정은 단순 링크드리스트 방식에서 버킷힙, 크기별 분류, 아레나 풀(CPU·스레드별 메모리 풀)로 진화했다.
- 프론트엔드는 CLAB·TLAB·아레나 방식으로, 백엔드는 버디 알고리즘과 BIPOP 테이블로 메모리 조각화를 관리한다.
- dlmalloc, ptmalloc2, jemalloc, tcmalloc, mimalloc 등 주요 할당자들을 스레드 안전성, 캐시, NUMA 대응, CAS 연산 수로 비교했으며, mimalloc과 snmalloc이 원자 연산 최소화로 가장 우수하다.
- arenas와 per-thread 캐시는 lock-free 특성으로 경합을 줄이지만, 일부 할당자는 여전히 공유 메모리라인 bouncing이나 중앙 freelist 접근으로 인한 CAS 경합이 발생한다.