Oracle® Solaris Studio 12.4: パフォーマンスアナライザチュートリアル

印刷ビューの終了

更新: 2014 年 12 月
 
 

同期トレースについて

同期トレースは、mutex_lock()pthread_mutex_lock()sem_wait() など、同期用のさまざまなライブラリ関数に割り込むことによって実装されます。pthread および Oracle Solaris 同期呼び出しの両方がトレースされます。

ターゲットプログラムがこれらの関数のいずれかを呼び出すと、呼び出しはデータコレクタによってインターセプトされます。現在の時間、ロックのアドレス、その他のデータがキャプチャーされたあと、割り込みルーチンが実際のライブラリルーチンを呼び出します。実際のライブラリルーチンが戻ると、データコレクタがふたたび時間を読み取り、終了時間と開始時間の差を計算します。その差がユーザー指定のしきい値を超える場合、イベントが記録されます。時間がしきい値を超えない場合、イベントは記録されません。どちらの場合も、実際のライブラリルーチンからの戻り値が呼び出し元に返されます。

イベントを記録するかどうかの決定に使用されるしきい値は、collect コマンドの -s オプションを使用して設定できます。パフォーマンスアナライザを使用して実験を収集する場合、「アプリケーションのプロファイル」ダイアログの「同期待ちトレース」の「最小遅延」でしきい値を指定できます。しきい値はマイクロ秒数に、またはキーワード calibrate または on に設定できます。calibrate または on を使用する場合、データコレクタは、競合しない相互排他ロックを獲得するのにかかる時間を調べ、しきい値をその値の 5 倍に設定します。0 または all のしきい値を指定すると、すべてのイベントが記録されます。

このチュートリアルでは、2 つの実験で同期待ちトレースを記録します。一方の実験では測定に基づいたしきい値を使用し、もう一方の実験ではしきい値をゼロにします。どちらの実験にもクロックプロファイリングが含まれます。