インテル® VTune™ Amplifier 2018 ヘルプ

外部データと CSV ファイルの作成

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

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

インテル® VTune™ Amplifier に csv ファイルから取得されたカスタム統計を解釈させるには、ファイル形式が次の条件に適合していることを確認してください。

ファイル名

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

ファイル名の形式: [ユーザー定義]-ホスト名-<システムのホスト名>.csv

説明:

例:phases-hostname-octagon53.csv

csv ファイル名のホスト名が指定されていないか誤りがある場合、インテル® VTune™ Amplifier は次の制約の下インポートされたデータを表示します。

  • イベント・タイムスタンプが UTC 形式で表されます。

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

インターバル値の形式

インターバルデータはスレッド ID に関連付けることができます。インテル® VTune™ Amplifier は、特定のスレッドに属さないデータ (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) を指定します。Linux* では、CLOCK_MONOTONIC_RAW を指定します (clock_gettime(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 であり、任意の 10 進数を使用します。

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 サフィックスを持ちます。

  • 日付と時間が使用される場合、QPC (QueryPerformanceCounter) を指定します。Linux* では、CLOCK_MONOTONIC_RAW を指定します (clock_gettime(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であり、任意の 10 進数を使用します。

CounterName1

イベント名。それぞれのカウンターは異なるカラムを持ちます。COUNT サフィックスは、累積カウンター値を指定するために使用されます。INST サフィックスは、即時カウンター値を指定するために使用されます。

pid

プロセス ID (オプションで提供)。次の条件をすべて満たすまれなケースを除いて、このフィールドの値が省略されても、結果のインポートには影響がありません。

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

  • 同じスレッド ID を持つ異なるスレッドが生成したcsv ファイルのレコード。

  • タイムスタンプが不正確で、データが同じスレッド ID を持つ複数のスレッドに関連付けられている可能性がある場合。

このフィールドをデータ内の空の値として指定するか、ファイルヘッダーとデータの両方で完全にスキップすることができます。

tid

スレッド ID (オプションで提供)。このフィールドに値が指定されると、インターバルはタスクとして解釈されます。そうでない場合、インターバルはフレームとして解釈されます。

このフィールドをデータ内の空の値として指定するか、ファイルヘッダーとデータの両方で完全にスキップすることができます。

追加要件

関連情報