このプロジェクトについて
# mimalloc-pprof
[microsoft/mimalloc](https://github.com/microsoft/mimalloc)のフォークで、**pprof互換のサンプリングされたヒーププロファイリング**を追加し、LinuxやmacOSと並んでネイティブWindowsをファーストクラスのターゲットとしています。また、Bunのメモリ返却機能(別名「ホールパンチ」)をすべて取り込み、再検証しています。
## 主な機能
- **pprof互換のヒーププロファイリング**: サンプリングされたライブアロケーションを追跡し、gperftoolsの`heap_v2`テキスト形式または非圧縮のpprof `profile.proto`を書き出します。どちらも[google/pprof](https://github.com/google/pprof)で直接開くことができ、フレームグラフ、コールグラフ、トップレポート、プロファイル差分を利用できます。
- **Windowsファーストクラス**: 使用可能なWindowsプロファイルを生成する唯一のmimallocヒーププロファイラです。上流のmimallocにはプロファイラがありません。BunのフォークはWin32スタックをキャプチャしますが、モジュールマッピングを出力しません。このフォークはロードされたモジュールを明示的に列挙します。
- **メモリ返却**: Bunのメモリ返却機能(ホールパージ、バックグラウンドパージスレッド、時間遅延パージ)を含み、任意のスレッドからのプロセス全体の即時パージ(ゲート付き、デフォルトでは待機)、サブページホールパージ、明示的な空アリーナの回収を追加します。
- **正確な統計**: `mi_stats_get`、`mi_stats_get_json`、ヒープごとのJSONダンプ、DHAT正確プロファイリング(Valgrind形式)、アロケーションイベントコールバック、ビューア付きのライブヒープスナップショット。
- **堅牢性**: 文書化されたロック順序を持つfork()ハンドラ、ランタイムロック順序チェッカー、フォールトインジェクションテスト付きのヒープティアダウンABAクレームプロトコル、ガードページアロケーション、強化/セキュアビルドモード、ASan/Valgrind/ETWトラッキング。
- **プラットフォームサポート**: Windows MSVCとMinGW、macOSのmalloc-zone interposeとzone introspection、Linux。完全なC APIを備えたファーストパーティのRustクレート。
- **パフォーマンス**: スレッドスケーリング、要求サイズ分布、短命スレッド、アイドル後のメモリ返却にわたる、TCMalloc、jemalloc、Microsoft mimalloc、Bun mimallocとの広範なベンチマーク。
## 統合
プロファイリングは2回オプトインです。コンパイル時(cargo `features = ["pprof"]`またはCMake `-DMI_PPROF=ON`)と実行時(start APIまたは`MIMALLOC_PROF=1`)。デフォルトのビルドは、単なる高速アロケータです。
## バージョン
上流のmimallocの`dev3`ライン(クレート`mimalloc-pprof` 1.x)を追跡しています。レガシーv2ライン(0.8.x)は`v2`ブランチに保存されていますが、メンテナンスされていません。
## ドキュメント
- [機能比較](#feature-comparison): Microsoft MiMalloc-V3、Bunのフォーク、jemallocとの並列比較。すべてのセルに出典があります。
- [スレッドスケーリング](#thread-scaling-by-allocation-pattern): 6つのアロケーションパターンにおける1〜8ワーカーの集約スループット。
- [アイドル後に返却されるメモリ](#memory-returned-after-idle): ワークのバーストが排出されたときに各アロケータが返却するもの。
- [パフォーマンス](#performance): 完全な方法論、セルごとの表、ベンチマークファミリー。
- [このフォークを使う理由](#why-use-this-fork): 存在する中で最もテストされたmimallocフォーク。
- [Bunの機能](#bun-features): oven-sh/mimallocから移植されたすべての機能と、意図的に除外されたもの。
- [プロファイリングと可観測性](#profiling-and-observability): サンプリングされたpprof、正確な統計、DHAT、メモリイベント。
- [発見および修正された上流のバグ](#upstream-bugs-found-and-fixed): 2つの無制限のメモリリークを含む。
- [Q&A](#qa)
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.