コード内で収集コントロール API を使用して、インテル® VTune™ プロファイラーがアプリケーションのデータを収集する方法を制御できます。
使用するプリミティブ |
説明 |
---|---|
void __itt_pause (void) |
データを収集せずにアプリケーションを実行します。インテル® VTune™ プロファイラーは、スレッドやプロセスの生成など重要な情報のみを収集することで、収集時のオーバーヘッドを軽減できます。 |
void __itt_resume (void) |
データの収集を再開します。インテル® VTune™ プロファイラーはすべてのデータの収集を再開します。 |
void __itt_detach (void) |
データ収集をデタッチします。インテル® VTune™ プロファイラーはすべてのプロセスからコレクターをデタッチします。アプリケーションはそのまま動作しますが、実行中にデータは収集されません。 |
データ収集をポーズすると次の効果があります。
データ収集は、現在のスレッド内だけではなくプログラム全体でポーズされます。
一部のランタイム解析のオーバーヘッドを軽減できます。
次の API は、データ収集のポーズの影響を受けません。
ドメイン API
文字列ハンドル API
スレッド命名 API
次の API は、データ収集のポーズの影響を受けます。これらの API はポーズ状態ではデータが収集されません。
タスク API
フレーム API
イベント API
ユーザー定義同期 API
ポーズ (Pause)/再開 (Resume) API の呼び出し頻度は 1Hz が妥当なレートです。この操作は、解析の実行中にすべてのプロセスのデータ収集を一時停止および再開し、対応する収集の状態を GUI に通知するため、小さなワークフローで頻繁に呼び出すことは推奨されません。小さなワークロードでは、フレーム API の使用を検討してください。
次のコードの pause/resume 呼び出しは、収集ポーズしてアプリケーションを起動し、特定のコード領域に集中できるようにします。
int main(int argc, char* argv[])
{
// 初期化
__itt_resume();
// プロファイル
__itt_pause();
// ファイナライズ
return 0;
}
次のコードに示す pause/resume 呼び出しは、注目しないワークを非表示にします。
int main(int argc, char* argv[])
{
// プロファイルするワーク
__itt_pause();
// プロファイルしないワーク
__itt_resume();
// プロファイルするワーク
__itt_detach();
// プロファイルしないワーク
return 0;
}