プログラミング
Jemalloc 5.4.0 リリース
要約
jemallocのバージョン5.4.0がリリースされました。このバージョンでは、技術的負債の解消に重点が置かれ、リファクタリング、バグ修正、テストカバレッジの向上、オプションの整理が含まれています。また、カスタムエクステント割り当てフックで再利用をマークできるEXTENT_ALLOC_FLAG_PINNEDの追加や、ピン留めメモリ使用量とミューテックス統計を報告する新しいmallctlインターフェースなどが新機能として追加されています。
全文翻訳
jemalloc / jemalloc 公開通知
通知設定を変更するにはサインインが必要です
Fork 1.6k Star 11.1k
5.4.0 最新
最新
比較
タグを選択して比較
申し訳ありません、問題が発生しました。
読み込み中
申し訳ありません、問題が発生しました。
おっと!読み込み中にエラーが発生しました。
このページを再読み込みしてください。
結果が見つかりません
すべてのタグを表示
guangli-dai がこれをリリースしました 17 Sep 18:31 · このリリース以降、dev に 5 件のコミットがあります
5.4.0
7a34f18
このリリースには160件以上のコミットが含まれており、リファクタリング、バグ修正、テストカバレッジの向上、オプションの整理といった技術的負債の解消に重点が置かれています。また、アップストリームの問題報告に基づくポータビリティの改善も含まれています。
新機能:
EXTENT_ALLOC_FLAG_PINNED を追加し、カスタムエクステント割り当てフックが、デケイおよびパージパイプライン外での優先的な再利用のために、HugeTLBページなどの非回収可能なマッピングをマークできるようにしました。
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)
スレッド.arena を介したパーCPUアリーナ選択の再開を許可します。(@Algunenano: 68c35f6)
人間が読める形式とJSON形式のマロックス統計情報のコンテンツをより良く整合させました。(@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.* mallctls は 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 における prof-sampling / guard-page の相互作用バグを修正しました。(@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 を使用してクロックロールバックによる遅延を防ぎ、configure時にモノトニック条件変数サポートを検出します。(@antonio2368: ebacec3, 8361239)
macOS でのコンパイル警告を修正しました。(@gctony: abb0a8a)
MinGWビルドでのスレッド終了TSDクリーンアップを修正しました。(@gctony: 1e92317)
GCC 16のビルド警告を、マクロおよび関数構文での -Wpedantic 違反を削除し、-Wstringop-truncation を解決するためにプロファイリングスレッド名のコピーを明示的にNUL終端することにより修正しました。(@grueninger: 5acdcee, c22d929, @jasonangelov: 6a245e0)
PID名前空間シンボリックリンクをglibc依存のstrtok/atolなしで解析し、識別子をuint64_tとして返します。(@guangli-dai: 278d90a)
貢献者
fzakaria, Algunenano, およびその他の11人の貢献者
アセット
3
読み込み中
おっと!問題が発生しました。
このページを再読み込みしてください。
🎉 7 Kriskras99, JaySon-Huang, deadmarshal, kkocdko, Safari77, Tipuch, および 0x130c が hooray 絵文字で反応しました
❤️ 1 kkocdko がハート絵文字で反応しました
👀 1 JaySon-Huang が目の絵文字で反応しました
すべての反応
🎉 7 件の反応
❤️ 1 件の反応
👀 1 件の反応
7人が反応しました
0 ディスカッションに参加