大規模なマルチスレッドサーバーのメモリ使用量を調査しようとしています。 mallinfo()によると、私はarena=350M
とfordblks=290M
を得ています。これは、ほとんどのスペースが実際にmalloc()
の内部で無駄になっていることを示しています。 malloc_info()
関数は、わかりやすいXMLデータ構造を提供します。それでも、誰かが私に説明することができますGNU malloc_info():実際に割り当てられたメモリを取得しますか?
- ヒープ
0
は特別ですか?他のすべてが住んでいる主なアリーナですか? <size from=.../>
チャンクが割り当てられていますか?<system>
要素とは何ですか?mmap()/sbrk()
を使用して割り当てられたメモリ?<aspace>
要素とは何ですか?使用可能なメモリ?<aspace type="mprotect" .../>
についてはどうですか?
ちょうどはじめに、私は、アプリケーションによって割り当てられた総メモリ、つまり解放されていないすべてのメモリをプロットできるようにしたいと考えています(malloc()
)。
ソースを見ると、すべての 'size'要素と' unordered'要素の 'total'フィールドを合計することで解放され、まだ再利用されていないメモリ(利用可能)の量を計算できることがわかりました。それは私の2番目のポイントに答える。 –
その他のソース解析: ' 'は 'mallinfo()' 'arena'フィールドと同じです。 –