Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

7.2.2.3. Massif を使ったヒープとスタックの領域プロファイリング

Massif は指定アプリケーションが使用するヒープ領域を測定します。測定対象は、有用な領域および会計、調整用に割り当てられている追加領域の両方になりますmassif はアプリケーションのメモリー使用を抑え実行速度を高めながらアプリケーションが swap 領域を使い切ってしまう可能性を低減する方法を理解する場合に役立ちますmassif を付けてアプリケーションを実行すると実行速度が通常より約 20 倍遅くなります。
アプリケーションで massif を実行するには次のコマンドを実行します。
# valgrind --tool=massif application
次のオプションを使用すると massif の出力を特定の問題に集中させることもできます。
--heap
massif にヒープのプロファイリングを行わせるかどうかを指定します。デフォルト値は --heap=yes です。--heap=no に設定するとヒープのプロファイリングが無効になります。
--heap-admin
ヒープのプロファイリングを有効にした場合の管理に使用するブロックごとのバイト数を指定します。デフォルト値は 8 バイトです。
--stacks
massif にスタックのプロファイリングを行わせるかどうかを指定します。スタックのプロファイリングにより massif の動作がかなり遅くなる可能性があるため、デフォルト値は --stack=no です。スタックのプロファイリングを有効にする場合は --stack=yes に設定します。プロファイリングするアプリケーションに関連するスタックサイズの変更をよりわかりやすく示すため massif はメインスタックの開始時のサイズはゼロであると仮定している点に注意してください。
--time-unit
massif でプロファイリングデータを収集する間隔を指定します。デフォルト値は i (命令を実行) です。ms (ミリ秒数またはリアルタイム) や B (ヒープおよびスタックで割り当てられたバイト数または割り当て解除されたバイト数) を指定することもできます。ハードウェアが異なる場合でもほぼ再現が可能なため短時間実行のアプリケーションやテスト目的の場合には割り当てられたバイト数を確認すると役に立ちます。
Massif はプロファイリングデータを massif.out.pid ファイルに出力します。pid は指定アプリケーションのプロセス識別子になります。ms_print ツールはこのプロファイリングデータを図式化しアプリケーション実行中のメモリー消費量を表示すると共にメモリー割り当てのピーク時に割り当てを行うサイトに関する詳細情報を表示します。massif.out.pid ファイルのデータを図式化するには次のコマンドを実行します。
# ms_print massif.out.pid
Massif のオプション全一覧は /usr/share/doc/valgrind-version/valgrind_manual.pdf に収納されているドキュメントを参照してください。