jemalloc 5.4.0リリース、160超のコミット
原題: Jemalloc 5.4.0
なぜ重要か
jemalloc はMeta・Redis・FreeBSDなど広範な本番システムで採用されており、pinnedメモリ管理の強化はHugeTLBを活用する高性能ワークロードに直接影響する。
オープンソースのメモリアロケータ「jemalloc」が2025年9月17日にバージョン5.4.0をリリースした。今回のリリースは160件以上のコミットを含み、技術的負債の解消を中心にリファクタリング、バグ修正、テストカバレッジ改善、オプション整理、およびポータビリティ向上が行われた。新機能としてHugeTLBページ対応のpinnedメモリ管理機能などが追加された。
jemalloc 5.4.0が2025年9月17日に公開された。リリースを担当したのはguangli-daiで、開発ブランチへのコミットは現時点でリリース後5件にとどまる。
今回の最大の焦点は「技術的負債の解消」だ。160件超のコミットの大半はリファクタリング、バグ修正、テストカバレッジの向上、オプション整理に費やされており、地道な品質向上が中心となっている。
新機能で注目すべき点は三つある。
一つ目は「EXTENT_ALLOC_FLAG_PINNED」の追加。カスタムのextentアロケーションフックがHugeTLBページのような「回収不能なマッピング」をマーク付けし、decayおよびpurgeパイプラインの外側で優先的に再利用できるようになった。これに合わせて「stats.pinned」「stats.arenas.<i>.pinned」など複数のmallctlインタフェースが追加され、pinnedメモリ使用量とmutex統計をレポートできる(@binliu19)。
二つ目は「thread.arena」によるper-CPU arena選択の再開対応。@Algunenanoによる変更で、per-CPUアリーナ選択を途中から再開できるようになった。
三つ目は人間が読めるテキスト形式とJSON形式のmalloc統計の整合性向上(@spredolac)。また、実行時オプション「experimental_infallible_new」をコンパイル時オプション「--enable-cxx-infallible-new」に置き換えることでコンパイラレベルの最適化とムーブコンストラクタの最適化が可能になり、「new(std::nothrow)」の契約上の問題も修正された。
非互換変更としては、tcacheの補充・保持ターゲットをビン単位でGCイベント間の実需要に応じて動的に調整する仕組みに変更し、固定値によるリフィルを廃止した。