イベントスキッドは、イベントを発生させるソースコード行と実際にイベントが発生する行が異なるイベントの記録です。
イベントスキッドでは、呼び出し元の関数イベントが、呼び出し先の関数に記録される場合もあります。
イベントスキッドはいくつかの要因によって発生します。
プロセッサーのマイクロコードから割り込みコントローラ (APIC) を介してイベントが伝播され、プロセッサーに戻るまでの遅延。
現在の命令のリタイアサイクルを完了する必要があります。
割り込みが発生した場合、プロセッサーは実行パイプラインをフラッシュして命令ストリームをシリアル化しなければならないため。
インテル® プロセッサーは、いくつかのイベントで正確な発生場所をサポートします。これらのイベントは、プリサイスイベントと呼ばれます。
イベントスキッドは解析結果の精度に影響します。グループ化レベルが非常に小さい場合 (例えば、命令、ソース行、または基本ブロック)、インテル® VTune™ プロファイラーはパフォーマンス結果を正しく関連付けることができません。たとえば、行 A に問題が発生すると、行 B がホットスポットとして表示されます。ハードウェア・イベントベースのメトリックの計算式で異なる CPU イベントが異なるスキッドを持つ場合、インテル® VTune™ プロファイラーはすべてのメトリックを無効化しデータを異なるブロックの結果と認識する恐れがあります。この種の問題は、通常、関数レベルでは現れません。
jmp または call 命令の実行時に発生するイベントは、実行フローでは元の jmp/ call から 1 ないし 2 命令離れた命令にひも付けされることがあります。この例では、mov 命令はループの最後にある分岐のターゲットであるため、ループ上部の mov 命令はイベントの 1.02% には該当しません。このイベントの真の発生元は、ループの最後の jmp 命令です。
イベント % |
命令 |
|---|---|
1.02% |
|