Jemalloc 5.4.0
요약
jemalloc 5.4.0 버전의 출시와 관련하여 메모리 할당기(memory allocator)에 대한 논의가 이루어지고 있습니다. 이 글은 jemalloc이 Ruby on Rails 환경에서 메모리 사용량을 크게 줄여주는 실질적인 효과를 보여주며, tcmalloc과 같은 다른 할당기의 설계 원칙에 대해서도 깊이 있는 기술적 분석을 제공합니다.
핵심 포인트
- jemalloc 적용 시 Sidekiq 큐의 메모리 사용량이 8GiB에서 1GiB 미만으로 대폭 감소함.
- 메모리 누수 문제 해결에 jemalloc이 큰 도움을 주어 개발자가 신경 쓸 필요가 줄어듦.
- tcmalloc의 스레드별 캐시를 CPU별 캐시로 전환한 배경과 Linux에서의 동작 원리에 대한 기술적 분석이 포함됨.
대부분 선의로 행동했는데도 Facebook/Meta 손에서 jemalloc이 슬픈 결말을 맞았다는 대목은 유일한 사례와는 거리가 멂. 기업 가치가 수조 달러인 회사의 관심이 오픈 소스 프로젝트에 반드시 장기적인 이득이 되는 것은 아님.
jemalloc이 프랑스어인지 늘 궁금했음. “Je m'alloc du memory”라는 뜻일까?
malloc 구현에 개발자의 이니셜을 붙이는 전통에 가까움. Jason Evans의 jemalloc, Poul-Henning Kamp의 phkmalloc, Doug Lea의 dlmalloc이 그런 예임.
덧붙여 systemd도 Système D, 즉 Système Débrouillard를 가리키는 문화적 표현인지 궁금했지만, Poettering이 다른 곳에서 말장난을 즐기는 것 같지는 않아 아마 아닐 듯함.
프랑스어를 몇 년간 쓰고서야 배운 재미있는 문법이 있음. 외래어는 대체로 대응하는 프랑스어 단어의 성을 따르므로, 엄밀히는 “de la memory”가 됨.
홈페이지와 GitHub 저장소 어디에도 Jason Evans가 한 번도 등장하지 않는 이유가 뭘까? 물러났다고 해도 최소한 이름은 남길 만하지 않을까?
Meta는 여전히 사용하고 개발하는지, 아니라면 지금 누가 개발을 주도하는지 궁금함. 확인해 보니 2022년 이후 릴리스가 없다가 이번에 나왔는데, 무엇이 달라진 걸까?
배경을 조금 더 알 수 있으면 좋겠음. 그래도 계속 유지보수되는 것은 반가운 일임. Ruby on Rails 앱에서는 큰 차이를 만들어 줌.
Sidekiq 큐에 jemalloc을 적용하니 메모리 사용량이 8GiB에서 1GiB 미만으로 줄어듦.
내 코드 어딘가에 느린 메모리 누수가 있지만, jemalloc을 쓰고 나서는 사실상 신경 쓰지 않아도 될 정도가 됨.
왜 tcmalloc만 스레드별 캐시에서 CPU별 캐시로 전환했는지 이 분야에 익숙한 분의 생각이 궁금함. Linux에서의 동작이 다른 플랫폼과 너무 달라지기 때문일까?
전문가는 아니지만, 스레드를 코어에 고정하지 않는다면 스레드별 캐시는 별 의미가 없어 보임. Linux 사용자 애플리케이션에서 코어 고정은 기본값도 아니고 다소 번거로움. 스레드가 다른 코어로 이동하면 캐시가 물리적 캐시와의 지역성을 잃게 됨.
tcmalloc은 Linux에서 CPU별 캐시를 사용해 잦은 스레드 생성·종료와 코어 수보다 많은 스레드가 실행되는 환경에서 이점을 얻는 것 같음. 다른 플랫폼은 확신하기 어렵지만, 스레드 간 해제나 정리를 Treiber 스택 같은 구조로 처리하면 보완할 수 있을 듯함. 비슷한 고속 경로 설계를 Linux에서 더 적은 코드로 구현하는 셈이라고 봄.
이 글이 HN 첫 화면에 오른 이유가 뭘까? 이번 릴리스에 특별히 주목할 만한 부분이 있을까?
내 Ruby on Rails 환경에서 jemalloc의 도움을 받고 있고, HN 첫 화면을 AI가 점령하는 데도 지쳐서 추천했음. 해커 정신이 돌아오길 바람!
AI 자동 생성 콘텐츠
본 콘텐츠는 GeekNews의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기