インテル® VTune™ プロファイラー・ユーザーガイド

外部データで 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]

カラム名

説明

name

イベント名。

start_tsc.[QPC|CLOCK_MONOTONIC_RAW|RDTSC|UTC]

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

  • パフォーマンス・カウンターを使用する場合、Windows* では QPC (QueryPerformanceCounter) を指定し、clock_gettime(CLOCK_MONOTONIC_RAW) を使用する Linux* では 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) を指定し、clock_gettime(CLOCK_MONOTONIC_RAW) を使用する Linux* では 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 を指定します。このフィールドに値が指定されると、間隔はタスクとして解釈されます。そうでない場合、間隔はフレームとして解釈され表示されます。

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

追加要件

関連情報