jemalloc: 20년간의 개발 여정 회고

jemalloc Postmortem

작성자
Short Ruby
발행일
2025년 06월 12일

핵심 요약

  • 1 jemalloc은 2004년 시작되어 약 20년간 활발히 개발되었던 고성능 메모리 할당자로, 최근 상류 개발이 종료되었습니다.
  • 2 이 할당자는 Lyken 언어에서 시작하여 FreeBSD, Firefox, 그리고 Facebook 인프라의 핵심 구성 요소로 발전하며 다양한 성능 및 기능 개선을 이루었습니다.
  • 3 개발 과정에서 단편화 문제, 외부 사용처와의 단절, 그리고 Meta의 투자 방향 변화 등 여러 어려움을 겪었으며, 현재는 독립적인 프로젝트로서의 발전이 멈춘 상태입니다.

도입

jemalloc은 2004년 구상되어 약 20년간 활발히 개발된 고성능 메모리 할당자입니다. 이 회고록은 창시자인 Jason Evans가 프로젝트의 시작부터 현재의 '정체(stasis)' 상태에 이르기까지의 여정을 다룹니다. 오픈 소스 라이선스로 계속 사용 가능하나, 상류 개발은 종료되었습니다.

jemalloc의 개발은 여러 단계를 거쳤습니다. ‘Phase 0: Lyken’에서 시작하여 2005년 FreeBSD에 통합되며 독립 프로젝트가 되었습니다. ‘Phase 1: FreeBSD’에서는 멀티프로세서 시스템 확장성을 위해 도입되었으나, 심각한 메모리 단편화 문제에 직면, 레이아웃 알고리즘이 사이즈 분리 방식으로 변경되는 중요한 개선이 이루어졌습니다.

‘Phase 1.5: Firefox’에서는 2007년 Mozilla Firefox 3의 메모리 단편화 해결을 위해 포팅되었습니다. Mozilla는 jemalloc을 포크하여 사용했고, 자체 벤치마크에서 포크 버전이 업스트림보다 성능이 우수하다는 결과로 통합에 어려움이 있었습니다.

‘Phase 2: Facebook’은 jemalloc의 전성기로, 2009년 저자가 Facebook에 합류하면서 핵심 인프라의 필수 요소가 되었습니다. 이 시기에 pprof 호환 힙 프로파일링, 광범위한 테스트, JSON 텔레메트리, 휴즈 페이지 상호작용 개선 등 핵심 기능들이 추가되었습니다. Facebook의 방대한 텔레메트리 데이터는 jemalloc의 성능 개선과 안정성 확보에 지대한 영향을 미쳤습니다. 저자가 2017년 Facebook을 떠난 후에도 jemalloc 팀은 수년간 개발과 유지보수를 이어갔습니다.

그러나 Facebook이 Meta로 리브랜딩되면서 핵심 기술 투자 방향이 ROI 중심으로 전환, jemalloc 개발의 정체로 이어졌습니다. 특히 휴즈 페이지 할당(HPA)과 같은 장기 기능 개발이 중단되었으며, 일반적인 유용성을 위한 장기 개발을 이끌 인력이 사라졌습니다. 저자는 Valgrind 지원 제거 시 외부 사용자의 중요성 인지 부족, 개방형 개발에도 다른 조직의 주요 기여자 확보 실패 등을 아쉬운 실패 사례로 언급했습니다. 현재 ‘Phase 4: Stasis’에 이르러 저자는 “상류 jemalloc 개발은 종료되었다”고 선언하며, Meta의 요구사항이 외부 사용처와 더 이상 일치하지 않는다고 밝혔습니다.

결론

jemalloc은 20년간의 여정 끝에 적극적인 상류 개발은 멈췄지만, 그 과정에서 얻은 기술적 성과와 교훈은 매우 중요합니다. FreeBSD, Firefox, Facebook 등 다양한 환경에서 메모리 관리 효율성을 높이는 데 기여하며 수많은 기술적 도전과 혁신을 거쳤습니다. 비록 활발한 개발은 멈추었지만, jemalloc은 메모리 할당자 분야에 깊은 발자취를 남겼습니다. 저자는 이 프로젝트에 기여한 모든 이들에게 감사를 표하며, jemalloc이 남긴 기술적 유산을 강조합니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!