Hacker News인프라 · 데브옵스

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 경합이 발생한다.
AI 요약 안내

AI가 한국어로 정리한 내용입니다. 정확한 정보는 원문을 확인해 주세요.

요약 원칙 ↗