外部データで CSV ファイルを作成

インテル® VTune™ プロファイラーは、カスタムコレクターやターゲット・アプリケーションで外部収集されたパフォーマンス統計と、インテル® VTune™ プロファイラーの解析を統合できます。これを実現するには、収集したカスタムデータを定義済みの構造体を持つ csv ファイルとして提供し、このファイルをインテル® VTune™ プロファイラーの結果ディレクトリーに保存します。

インテル® VTune™ プロファイラーは、次のようなデータをロードして処理することができます。

インテル® VTune™ プロファイラーが、csv ファイルのカスタムと統計を解釈するようにするには、ファイル形式が以下の要件を満たしていることを確認してください。

ファイル名

csvファイル名は次の形式に従って、カスタムコレクターがデータを収集したホスト名を指定する必要があります。

ファイル名形式:[user-defined]-hostname-<hostname-of-system>.csv

説明:

例:phases-hostname-octagon53.csv

csv ファイル名でホスト名が指定されていない、または正しく指定されていない場合、インテル® VTune™ プロファイラーでインポートされたデータを表示する際に次の制限が適用されます。

  • イベントタイムスタンプは、UTC 形式で示されます。

  • グローバルデータ (特定のスレッド/プロセスに関連しない) のみが表示されます。

インターバル値の形式

インターバル・データは、スレッド ID に関連付けることもできます。インテル® VTune™ プロファイラーは、特定のスレッドにバインドされていないデータ (csv ファイルには TID がない) をフレームとして表します。スレッドにバインドされてたデータ (csv ファイルには TID がある) をタスクとして表します。

インポートされた間隔値は 5 つのカラムを使用します。これらのカラムの順序は重要です。

name,start_tsc.[QPC|CLOCK_MONOTONIC_RAW|RDTSC|UTC],end_tsc,[pid],[tid]

カラム名

説明

名前

イベント名。

start_tsc.[QPC|CLOCK_MONOTONIC_RAW|RDTSC|UTC]

イベント開始タイムスタンプ。このカラムには、タイムスタンプ・カウンターの種類を示すQPC|CLOCK_MONOTONIC_RAWRDTSC または UTC サフィックスがあります。

  • パフォーマンス・カウンターを使用する場合、Windows* ではQPC(QueryPerformanceCounter) を指定し、Linux* 上でCLOCK_MONOTONIC_RAW を使用する場合、CLOCK_MONOTONIC_RAW を指定します。

  • RDTSC カウンターを使用する場合、RDTSC を指定します。RDTSC の取得は次のように行います。

    • Microsoft* コンパイラーとインテル® コンパイラーでは、rdtsc 組込み関数を使用します

    • GCC* コンパイラーを使用する場合、次の関数を必要に応じてコードにコピーして呼び出します。

    #include <stdint.h> int64_t rdtsc() { int64_t tstamp; #if defined(__x86_64__) asm( "rdtsc\n\t" "shlq $32,%%rdx\n\t" "or %%rax,%%rdx\n\t" "movq %%rdx,%0\n\t" : "=g"(tstamp) : : "rax", "rdx" ); #elif defined(__i386__) asm( "rdtsc\n": "=A"(tstamp) ); #else #error NYI #endif return tstamp; }
  • イベントベースのコールスタック収集と同様に、注目するプロセスに UTC 日付と時間が使用される場合。指定形式は YYYY-MM-DD hh:mm:ss.sssss です。小数点以下の値は任意です。

end_tsc

イベント終了タイムスタンプ。

pid

必要に応じてプロセス ID を指定します。このフィールドに値が存在しなくても、次の条件が満たされれば (稀なケースを除いて) 結果のインポートには影響しません。

  • スレッド ID は、収集時間フレーム内にオペレーティング・システムによって再利用されます。

  • 同じスレッド ID を持つ異なるスレッドは、csv ファイルを開きます。

  • タイムスタンプは不正確であり、データは同じスレッド ID を持つ複数のスレッドに分類される可能性があります。

このフィールドをデータ内の空の値とするか、ファイルヘッダーとデータの両方から完全に除外できます。

tid

必要に応じてスレッド ID を指定します。このフィールドに値が指定されると、間隔はタスクとして解釈されます。それ以外は間隔はフレームとして解釈され表示されます。

このフィールドはデータ内の空の値とするか、ファイルヘッダーとデータの両方から完全に除外できます。

計数値の形式

2 種類の計数値をインポートできます。

次の形式で指定します。

tsc.[QPC|CLOCK_MONOTONIC_RAW|RDTSC|UTC],CounterName1.COUNT|INST[,CounterName2.COUNT|INST],[pid],[tid]

カラム名

説明

tsc.[QPC|CLOCK_MONOTONIC_RAW|RDTSC|UTC]

イベント開始タイムスタンプ。このカラムは、タイムスタンプ・カウンターの種類を示す QPC|CLOCK_MONOTONIC_RAWRDTSC 、または UTC サフィックスがあります。

  • パフォーマンス・カウンターを使用する場合、Windows* ではQPC(QueryPerformanceCounter) を指定し、Linux* 上で CLOCK_MONOTONIC_RAW を使用する場合、CLOCK_MONOTONIC_RAW を指定します。

  • RDTSC カウンターを使用する場合、RDTSC を指定します。Windows* で RDTSC を取得するには、__rdtsc() 組込み関数を使用します。Linux* で RDTSC を使用する場合、次の関数を必要に応じてコードにコピーして呼び出します。

    #include <stdint.h> int64_t rdtsc() { int64_t tstamp; #if defined(__x86_64__) asm( "rdtsc\n\t" "shlq $32,%%rdx\n\t" "or %%rax,%%rdx\n\t" "movq %%rdx,%0\n\t" : "=g"(tstamp) : : "rax", "rdx" ); #elif defined(__i386__) asm( "rdtsc\n", "=A"(tstamp) ); #else #error NYI #endif return tstamp; }
  • イベントベースのコールスタック収集と同様に、注目するプロセスにUTC日付と時間が使用される場合。指定形式は YYYY-MM-DD hh:mm:ss.sssss です。小数点以下の値は任意です。

CounterName1

イベント名。カウンターはそれぞれのカラムを持ちます。COUNTサフィックスは累積カウンター値を指定する際に使用します。INSTサフィックスは瞬間カウンター値を指定する際に使用します。

pid

必要に応じてプロセス ID を指定します。このフィールドに値が存在しなくても、次の条件が満たされれば (稀なケースを除いて) 結果のインポートには影響しません。

  • スレッド ID は、収集時間フレーム内にオペレーティング・システムによって再利用されます。

  • 同じスレッド ID を持つ異なるスレッドは、csvファイルを開きます。

  • タイムスタンプは不正確であり、データは同じスレッド ID を持つ複数のスレッドに分類される可能性があります。

このフィールドをデータ内の空の値とするか、ファイルヘッダーとデータの両方から完全に除外できます。

tid

必要に応じてスレッド ID を指定します。このフィールドに値が指定されると、間隔はタスクとして解釈されます。それ以外は間隔はフレームとして解釈され表示されます。

このフィールドはデータ内の空の値とするか、ファイルヘッダーとデータの両方から完全に除外できます。

追加要件

関連情報