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의 요구사항이 외부 사용처와 더 이상 일치하지 않는다고 밝혔습니다.