HN 日本語サマリー

← 一覧へ戻る
プログラミング

Jemalloc 5.4.0 リリース

Jemalloc 5.4.0 (github.com)

317 pointsby gkfasdfasdf85 コメント

要約

jemallocのバージョン5.4.0がリリースされました。このバージョンでは、技術的負債の解消に重点が置かれ、リファクタリング、バグ修正、テストカバレッジの向上、オプションの整理が含まれています。また、カスタムエクステント割り当てフックで再利用をマークできるEXTENT_ALLOC_FLAG_PINNEDの追加や、ピン留めメモリ使用量とミューテックス統計を報告する新しいmallctlインターフェースなどが新機能として追加されています。

全文翻訳

5.4.0

最新

最新

タグを選択して比較

エラーが発生しました。

フィルター

読み込み中

エラーが発生しました。

おっと!

読み込み中にエラーが発生しました。このページを再読み込みしてください。

結果が見つかりませんでした

すべてのタグを表示

[画像: @guangli-dai] guangli-dai が 17 Sep 18:31 にリリースしました。

· このリリース以降、dev に 53 件のコミットがあります (5.4.0...dev)

5.4.0

7a34f18

このリリースには160以上のコミットが含まれており、リファクタリング、バグ修正、テストカバレッジの向上、オプションの整理といった技術的負債の解消に重点が置かれています。また、アップストリームのIssue報告に基づくポータビリティの改善も含まれています。

新機能:

  • カスタムエクステント割り当てフックが、再利用を優先するマッピング(例: HugeTLBページ)を、デケイおよびパージパイプライン外での再利用のためにマークできるように、EXTENT_ALLOC_FLAG_PINNED を追加しました。また、ピン留めされたメモリ使用量とミューテックス統計情報を報告するための stats.pinned、stats.arenas.<i>.pinned、stats.arenas.<i>.extents.<j>.npinned、stats.arenas.<i>.extents.<j>.pinned_bytes、stats.arenas.<i>.mutexes.extents_pinned.{counter} の mallctl インターフェースを追加しました。(@binliu19: be2de8c)
  • thread.arena を介してCPUごとのアリーナ選択を再開できるようになりました。(@Algunenano: 68c35f6)
  • 人間が読める形式とJSON形式の malloc 統計情報のコンテンツをより良く整合させました。(@spredolac: 68fe1be, 30b1a41, 04aad97)
  • ランタイムの experimental_infallible_new オプションをコンパイル時の --enable-cxx-infallible-new オプションに置き換え、コンパイラレベルの最適化とムーブコンストラクタでの最適化を可能にし、new(std::nothrow) の契約を修正しました。(@spredolac: 160ab9d, fe33667)

非互換な変更:

  • GCイベント間で観測された需要に合わせて、tcacheのフィルおよびリテンションターゲットをビンごとに調整し、固定のフィル/フラッシュポリシーを置き換えました。7つのレガシーな非実験的コントロール(lg_tcache_nslots_mul、tcache_nslots_small_min、tcache_nslots_small_max、tcache_nslots_large、tcache_gc_delay_bytes、lg_tcache_flush_small_div、lg_tcache_flush_large_div)を削除しました。対応するmalloc_conf設定はサイレントに無視され、opt.* mallctlはENOENTを返しますが、tcache_ncached_maxは引き続きサポートされます。(@spredolac: d13fe91)

バグ修正:

  • free、free_sized、free_aligned_sized、および process_madvise ベースのページパージ全体で errno を保持するようにしました。(@spredolac: 3a77966, 86f0582)
  • サイズクラスにおける数値オーバーフローチェックを修正しました。(@spredolac: 6b24522)
  • free_sized() および free_aligned_sized() でNULLを受け入れるようにしました(C23準拠)。(@bigbruno: 7ce8b91)
  • TSDライフサイクルのエッジケースを修正しました。1) スレッドキャッシュビンを有効マークする前に初期化し、再入可能なブートストラップ割り当てが未初期化状態を使用するのを防ぎます。2) ジェネリックTSDプラットフォームでのスレッド終了後の遅延解放でTSD再作成を回避します。(@fzakaria: 54f22c8, @spredolac: fb5499a)
  • init_thp_state でTHP sysfsファイルを開く際に O_CLOEXEC を使用します。(@ibookstein: d070554)
  • malloc_stats_print 出力での重複した opt.stats_print および opt.stats_print_opts フィールドを修正しました。(@spredolac: dfe3a2e)
  • arena_reset 中の潜在的なデッドロックを修正しました。(@guangli-dai: 6957341)
  • SANにおけるプロフサンプリング/ガードページ間の相互作用バグを修正しました。(@gctony: e36a0fa)

最適化とリファクタリング:

  • アリーナ管理、初期化、フォークオーケストレーション、割り当てディスパッチを jemalloc.c から抽出してjemallocのフロントエンドをモジュール化しました。tcache/アリーナの所有権を整理し、内部ヘッダーグラフを統合して循環依存を排除しました。(@spredolac: ba1e2fe, 8874597, 9d75722, de9ad14, ...)
  • アリーナヘルパーのリファクタリング、実装専用コントロールの内部化、制御フローマクロを型付きヘルパーに置き換え、ctl.c をサブシステムごとに整理することで、ctlディスパッチを簡素化しました。(@spredolac: 9e14346, 901365d, 4e903a0, 5bc8d6e)
  • ベースブロックの成長ヒューリスティックをキャップし、まれな競合状態での仮想メモリ枯渇を回避します。(@guangli-dai: 2f4db8c)
  • バックグラウンドスレッドのライフサイクルと状態操作をバックグラウンドスレッドモジュールに移動し、PAC/HPA呼び出し元から独立した所有権を明確にしました。(@guangli-dai: f1f0792)
  • PAI vtableディスパッチを直接PAC/HPA呼び出しに置き換え、廃止されたpai_t/pai.h抽象化を削除し、遅延ワークとデケイオーケストレーションをアリーナから移動させることで、ページ割り当て境界を簡素化しました。(@guangli-dai: 1dfa6f7, 8edd101, d410f43)
  • 統計情報収集とレンダリングを、個別の収集/発行ステージと記述子駆動テーブルにリファクタリングしました。(@spredolac: 184f304, 80c8fcb)
  • OS抽象化レイヤーを導入し、プラットフォーム依存のファイル/プロセスI/O、時間、同期、CPU、仮想メモリ、atfork、エラー処理、プロファイリング、スレッドyield、設定アクセス操作をアロケータコアコードから移動させました。(@guangli-dai: c4158ac, c8e2e01, ...)

ポータビリティの改善:

  • std::__throw_bad_alloc の呼び出しを標準C++に置き換えました(#2900)。(@lexprfuncall: 1a15fe3)
  • C99以降のために arena_s が可変長配列(bin_t all_bins[])を使用するようにしました。(@grueninger: 300b58b)
  • --with-lg-vaddr でのrdtscp検出を修正しました。(@xinydev: e8a0d2b)
  • macOSでの malloc_getcpu を修正し、現在のCPU番号を正しく読み取るようにしました。(@Algunenano: 5aabbc8)
  • バックグラウンドスレッドのスリープに CLOCK_MONOTONIC を使用してクロックロールバックによる遅延を防ぎ、設定時にモノトニック条件変数サポートを検出します。(@antonio2368: ebacec3, 8361239)
  • macOSでのコンパイル警告を修正しました。(@gctony: abb0a8a)
  • MinGWビルドでのスレッド終了TSDクリーンアップを修正しました。(@gctony: 1e92317)
  • GCC 16のビルド警告を修正しました。マクロおよび関数構文での -Wpedantic 違反を削除し、プロファイリングスレッド名のコピーを明示的にNULL終端して -Wstringop-truncation を解決しました。(@grueninger: 5acdcee, c22d929, @jasonangelov: 6a245e0)
  • glibc依存の strtok/atol を使用せずにPID名前空間シンボリックリンクを解析し、識別子を uint64_t として返します。(@guangli-dai: 278d90a)
貢献者

fzakaria, Algunenano, およびその他の11名の貢献者

アセット 3

読み込み中

おっと!

読み込み中にエラーが発生しました。このページを再読み込みしてください。

stevleibelt, adinosaur, aatifsyed, arakus, Ignition, n-rodriguez, KevinRickard, Jamim, gauravkumar37, schenkmi, およびその他の3名がサムズアップ絵文字で反応しました。 Kriskras99, JaySon-Huang, deadmarshal, kkocdko, Safari77, Tipuch, 0x130c, Wilfred, paolobarbolini, aatifsyed, およびその他の20名がホラ絵文字で反応しました。 kkocdko, tonisole, arakus, Ignition, n-rodriguez, kaspermarstal, Jamim, gauravkumar37, lin72h, および igxactly がハート絵文字で反応しました。 JaySon-Huang および igxactly が目絵文字で反応しました。

すべてのリアクション

  • 👍 13件のリアクション
  • 🎉 30件のリアクション
  • ❤️ 10件のリアクション
  • 👀 2件のリアクション

38名が反応しました

0 ディスカッションに参加