Meta がコア技術から焦点を移すことで、20年間の jemalloc 開発が終了

BigGo 編集部
Meta がコア技術から焦点を移すことで、20年間の jemalloc 開発が終了

20年間の開発と主要プラットフォームでの広範囲な採用を経て、 jemalloc メモリアロケータはアクティブな開発サイクルの終了を迎えた。プロジェクトの創設者は上流開発が終了したと発表し、現代コンピューティングにおける最も影響力のあるメモリ管理ツールの一つの時代の終わりを告げた。

jemalloc は2004年に Lyken と呼ばれるプログラミング言語プロジェクトの一部として始まったが、2005年に FreeBSD に統合された際に真の使命を見つけた。このアロケータは、コンピュータがマルチプロセッサアーキテクチャに移行する中で、マルチスレッドメモリ管理の高まるニーズに対応するために設計された。その成功により、 Mozilla Firefox を含む主要プロジェクトで採用され、 Windows システムでの重要なメモリ断片化問題の解決に貢献した。

jemalloc 開発タイムライン

  • 2004年: Lyken プログラミング言語の一部として初期構想
  • 2005年: FreeBSD への統合開始
  • 2007年: Mozilla Firefox が Windows のフラグメンテーション問題で採用
  • 2009-2017年: Facebook/Meta 開発フェーズで大幅な改善
  • 2016年: Huge Page Allocation (HPA) 開発開始
  • 2024年: アクティブなアップストリーム開発終了

企業投資がイノベーションを推進

このアロケータの最も重要な成長期間は Facebook (後の Meta )での期間中に訪れ、数千の異なるワークフローからの大規模テレメトリデータの恩恵を受けた。この実世界のパフォーマンスデータは最適化にとって非常に貴重であり、開発者が高速パス改善と断片化回避戦略について情報に基づいた決定を下すことを可能にした。同社の jemalloc 開発への投資には、専用チームの構築と包括的なテストインフラストラクチャの実装が含まれていた。

しかし、コミュニティでの議論によると、 Meta の最近のコア技術開発よりも投資収益率を重視する方向への転換が、プロジェクトの前進の勢いを事実上終了させたことが明らかになっている。2016年から開発されていた Huge Page Allocation ( HPA )機能は、適切なリファクタリングなしに技術的負債が蓄積されたため、最近停滞している。

主要な jemalloc ユーザー

  • FreeBSD (デフォルトシステムアロケータ)
  • Redis データベース
  • Mozilla Firefox (フォーク版)
  • Ruby on Rails アプリケーション
  • Android (以前、現在は置き換えられている)
  • Meta / Facebook インフラストラクチャ

技術的課題とコミュニティへの影響

開発チームは jemalloc の進化を通じて、いくつかの技術的ハードルに直面した。初期バージョンは特定のワークロード、特に KDE アプリケーションで深刻な断片化問題に悩まされ、割り当てアルゴリズムの完全な再設計を余儀なくされた。後の決定、例えばバージョン5.0.0での Valgrind サポートの削除は、これらのデバッグ機能に依存していた外部ユーザーとの摩擦を生み出した。

「 Jemalloc は依然として私の意見では、簡単に使用できる最高性能の汎用 malloc 実装です; TCMalloc は素晴らしいですが、 bazel を使用していない場合は使用するのが絶対的な悪夢です」

コミュニティは今、次に何が来るかに取り組んでいる。 jemalloc はオープンソースライセンスにより無期限に利用可能であり続けるが、ユーザーは既に将来のプロジェクトのために mimalloc や tcmalloc などの代替案を探求している。一部の開発者は、プロジェクトが完全にアーカイブされる前に、現代化されたデフォルト設定を持つ最終的な6.0リリースを求めている。

代替メモリアロケータ

  • mimalloc: 最近 CPython に採用され、 jemalloc と同等のパフォーマンスを持つ
  • tcmalloc: Google の高性能アロケータ、 Bazel ビルドシステムが必要
  • snmalloc: コミュニティで言及されている新興の代替手段
  • glibc malloc: 標準システムアロケータ、パフォーマンスは低め

将来を見据えて

その終了にもかかわらず、メモリ割り当て技術に対する jemalloc の影響は過小評価できない。現在 FreeBSD でデフォルトアロケータとして機能し、 Redis データベースから Ruby on Rails サーバーまで、無数のアプリケーションの重要なインフラストラクチャを支えている。プロジェクトの影響は直接的な使用を超えて広がり、多数の他のメモリアロケータにインスピレーションを与え、この分野に価値ある研究を貢献している。

jemalloc 開発の終了は、オープンソースインフラストラクチャプロジェクトの維持における広範な課題を浮き彫りにしている。ソフトウェアはそのまま機能し続けるが、継続的な開発の欠如は、ハードウェアとソフトウェア環境が進化するにつれて、徐々に最適性が低下する可能性があることを意味する。現在のところ、既存のユーザーは jemalloc の実証済みパフォーマンスに依存し続けることができるが、新しいプロジェクトはメモリ割り当て分野の新興代替案を検討する必要があるかもしれない。

参考: jemalloc Postmortem