メモリ断片化プロファイラはありますか? (freshmeat_linux/Linux] gccのバージョンがいいだろう)。 Valgrindはカスタムmalloc/free関数を使用しているため、これを解析することはできません。メモリ断片化プロファイラ
おかげで、 アンドリュー
メモリ断片化プロファイラはありますか? (freshmeat_linux/Linux] gccのバージョンがいいだろう)。 Valgrindはカスタムmalloc/free関数を使用しているため、これを解析することはできません。メモリ断片化プロファイラ
おかげで、 アンドリュー
私はトラブルあなたが見つけるかもしれない任意のツールは、カスタムメモリ管理のセグメントデータ構造を理解する方法を理解しています。忙しい配布(malloc/freeへのフック)を得ることができるかもしれませんが、空き配布(本質的に断片化です)は空中に浮かんで見えます。
なぜ、ビジー/フリーの統計情報/ヒストグラムをカスタムメモリマネージャに追加しないでください。ビンがlog2(サイズ)に比例するものでインデックス付けされている場合は、これらの統計情報を分割し合体するときのように保持して、サイズを知っていれば、log2(サイズ)
に比例するインデックスを使用して直接検索してビンを見つけることができます例えば、ヒストグラムのビン間隔
[2^nは、2 ^(N + 1))...
(例えば、あなたが細かいビンは、ログベースの平方根2(サイズを使用したい場合) はできx86で4つの整数命令で計算する[ビットスキャン、比較、設定、追加]
使用する合理的なビンサイズの別のセットはfollo (n-1)、2 ^(n + 1))...
[2^n + 2 ^(n-1)、2 ^(n + 1))...
再び簡単に計算[ビットスキャン、シフト、および、追加])
nedmalloc非常に良いカスタムアロケータで、断片化を避けるために最適化されたソース、付属しています。
私はそれをプラグインし、フラグメンテーション統計の内部ログを調べ始めます。
私は恐れます。は Valgrindです。
valgrindがコードの拡張機能を使用して割り当てを行う方法とその方法を知ることができます(アプリケーションを修正して再コンパイルする必要がありますが、デバッグしていない場合はnoopsにコンパイルします)。詳細はValgrindのマニュアルMemory pools: working with custom allocatorsにあります。
あなたはこれをしたら、あなたはあなたのヒープの使用状況を診断することを可能にする2つのツールがあります。はツールのを設定山塊とDHAT(クイックリマインダーを、Valgrindは、それはちょうど私たちは皆知っている1と愛を実行しています、Memcheck、デフォルト)。
Massif "は、ヒーププロファイラーであり、プログラムが使用するヒープメモリーの量を測定します。これには、便利なスペースと、ブックの保持や配置のために割り当てられた余分なバイトが含まれます。スタックは、デフォルトではそうしません。「
それが作成できる 『それはグラフィックの一種であるので、』グラフ:さらに多くのです
19.63^ ### | # | # :: | # : ::: | :::::::::# : : :: | : # : : : :: | : # : : : : ::: | : # : : : : : :: | ::::::::::: # : : : : : : ::: | : : # : : : : : : : :: | ::::: : # : : : : : : : : :: | @@@: : : # : : : : : : : : : @ | ::@ : : : # : : : : : : : : : @ | :::: @ : : : # : : : : : : : : : @ | ::: : @ : : : # : : : : : : : : : @ | ::: : : @ : : : # : : : : : : : : : @ | :::: : : : @ : : : # : : : : : : : : : @ | ::: : : : : @ : : : # : : : : : : : : : @ | :::: : : : : : @ : : : # : : : : : : : : : @ | ::: : : : : : : @ : : : # : : : : : : : : : @ 0 +----------------------------------------------------------------------->KB 0 29.48 Number of snapshots: 25 Detailed snapshots: [9, 14 (peak), 24]
何、本当にきれいなグラフを生成しているMassif Visualizerがあります
をDHATは、あなたがどのように正確に診断することができますアプリケーションはヒープを使用しますが、その部分は短期間であり、プログラムの全ライフを通して維持されますが、最初は使用されます。残念なことに、それに付随する素晴らしいグラフやグラフィカルツールはありません。出力は純粋ですありがたいことに、取得したいデータの量とその並べ替え方法を教えてくださいそれは聞こえるほど悪くない。
あなたは 'gdb'や別のデバッガを使うことができます。 –
gdbを使ってウォークスルーし、管理されるメモリバッファ全体のプロファイルを生成するmallocは実現不可能です。 – nos