Jemalloc 5.4.0 リリース
要約
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)
このリリースには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]
- [画像: @ibookstein]
- [画像: @lexprfuncall]
- [画像: @spredolac]
- [画像: @bigbruno]
- [画像: @xinydev]
- [画像: @binliu19]
- [画像: @guangli-dai]
- [画像: @antonio2368]
- [画像: @grueninger]
- [画像: @jasonangelov]
- [画像: @gctony]
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名が反応しました