Solaris OS での時間ベースのプロファイルでは、各 LWP の状態が定期的な間隔で格納されます。この時間間隔は、プロファイル間隔と呼ばれます。この情報は整数の配列に格納されます。その配列の 1 つの要素は、カーネルによって維持される 10 個のマイクロアカウンティングの各状態に使用されます。収集されたデータは、各状態で消費された、プロファイル間隔の分解能を持つ時間値に、パフォーマンスアナライザによって変換されます。デフォルトのプロファイル間隔は、約 10 ミリ秒 (10 ms) です。コレクタは、約 1 ミリ秒の高分解能プロファイル間隔と、約 100 ミリ秒の低分解能プロファイル間隔を提供し、OS で許されれば任意の間隔を許可します。引数を付けずに collect コマンドを実行すると、このコマンドが実行されるシステム上で許される範囲と分解能が出力されます。
次の表に、時間ベースのデータから計算されるメトリックスの定義を示します。
表 2–1 Solaris タイミングメトリックス
メトリック |
定義 |
---|---|
ユーザー CPU 時間 |
CPU のユーザーモードで実行中に使用される LWP 時間。 |
時計時間 |
LWP 1 で使用される LWP 時間。通常は、「実経過時間」です。 |
LWP 合計時間 |
LWP 時間の総合計。 |
システム CPU 時間 |
CPU のカーネルモードまたはトラップ状態で実行中に使用される LWP 時間。 |
CPU 待ち時間 |
CPU の待機中に使用される LWP 時間。 |
ユーザーロック時間 |
ロックの待機中に使用される LWP 時間。 |
テキストページフォルト時間 |
テキストページの待機中に使用される LWP 時間。 |
データページフォルト時間 |
データページの待機中に使用される LWP 時間。 |
ほかの待ち時間 |
カーネルページ待機中に使用される LWP 時間、またはスリープ中か停止中に使用される時間。 |
マルチスレッドの実験では、すべての LWP にまたがって実経過時間以外の時間が集計されます。定義した時計時間は、MPMD (Multiple-Program Multiple-Data) プログラムには意味がありません。
タイミングメトリックスは、プログラムがいくつかのカテゴリで時間を費やした部分を示し、プログラムのパフォーマンス向上に役立てることができます。
ユーザー CPU 時間が大きいということは、その場所で、プログラムが仕事の大半を行なっていることを示します。この情報は、アルゴリズムを再設計することによって特に有益となる可能性があるプログラム部分を見つけるのに使用できます。
システム CPU 時間が大きいということは、プログラムがシステムルーチンに対する呼び出しで多くの時間を使用していることを示します。
CPU 待ち時間が大きいということは、使用可能な CPU 以上に実行可能なスレッドが多いか、ほかのプロセスが CPU を使用していることを示します。
ユーザーロック時間が大きいということは、要求対象のロックをスレッドが取得できないことを示します。
テキストページフォルト時間が大きいということは、リンカーによって指定されたコードが、多数の呼び出しまたは分岐で新しいページの読み込みが発生するようなメモリー上の配置になることを意味します。
データページフォルト時間が大きいということは、データへのアクセスによって新しいページの読み込みが発生していること示します。この問題は、プログラムのデータ構造またはアルゴリズムを変更することによって解決できます。