GPUView でのスレッド実行の表示を理解することは、スレッドがアクティブな領域と、スレッドがビデオ固有の機能を実行する領域を確認するために重要です。
次の図は、システム プロセスと GPUView アイドル プロセスの 2 つのプロセスにまたがるアクティブなスレッドのみを示しているミリ秒分のスクリーン ショットです。 このビューには、3 つのスレッドが表示されています。
スレッドごとに、左側に名前が表示され、右側の灰色の四角の領域に実行時間が表示されます。 この領域全体をスレッド領域と呼びます。
スレッド名
上のグラフの赤い楕円で示している箇所には、括弧で囲まれたスレッド ID の後に、そのスレッドを生成したモジュールと関数が表示されています。 このケースでは、スレッド 432 がオフセット 0x37DC0 で dxgmms1.sys によって作成されたことになります。 シンボルが読み込まれた場合には、GPUView にはオフセット番号ではなくシンボリック名が表示されます。
スレッド実行領域
名前の右側の灰色の領域はスレッド実行領域です。これはスレッドの実行が可能だった期間を表しています。 このケースでは、このスレッドは該当期間中に 2 回実行されています。
スレッド実行時間
このケースでは、白い四角形が、実際にスレッドが実行された時間を表しています。 この図にはスレッドの実行時間が 2 つ示されています。
詳細テキスト
右側のスレッド実行領域の真上には、スレッドの実行に関する詳細情報が表示されています。 最初の数値は、この期間中の実行時間の数です。 [iTime] というラベルが付いた 2 つ目の数値は、このスレッドで DPC が実行された合計時間です。 3 つ目の項目は実行時間の合計時間であり、最後の項目はスレッドが実行したビューポート時間の割合です。
実行時間の詳細
Background Color
GPUView では、プロセッサの関係を示すために、実行時間の背景色が色分けされます。 上の図の場合、アイドル プロセスにスレッドが 2 つあることから、デュアルコアのコンピューターであることがわかります。 一方のプロセッサには白が、もう一方のプロセッサには明るい緑色が割り当てられています。 スレッドの切り替えが発生したときには、GPUView は背景の色によってプロセッサの情報を提供し、システム スレッドが実行されたときには 1 つ目のプロセッサで実行されていたことを示しています。
現在、GPUView はプロセッサの色として 8 種類の色を表示できます。最大 32 個のプロセッサがサポートされます。
スレッド優先度
各実行時間の先頭に表示されている数値は、スレッドの優先度です。
ハードウェアまたは DPC の割り込み
任意のスレッドで任意の時点に、ハードウェア割り込みまたは遅延プロシージャ呼び出し (DPC) を実行することができます。 GPUView は、この情報を、実行時間の内部で網掛け表示の時間として表します。 ハードウェア割り込みは赤の網掛けで表示され、DPC は青の網掛けで表示されます。
上の図では、1 つ目のアイドル コアで DPC が実行された直後に、2 つ目のアイドル コアでハードウェア割り込みが発生しています。
ネスト型実行プロファイル
一部の API については、特定の関数に費やされた時間が GPUView に表示されます。 これは、実行時間のネスト型実行と呼ばれます。 ビデオ カーネルの大部分は、スレッドが特定のルーチンを開始/終了した時間を示すイベントをログに記録します。
上の図では、左端の矢印は、青のネスト型実行時間を指しています。 青色は、ビデオ カーネル コードを表すための予約色です。 2 つ目の矢印は、赤のネスト型実行時間を指しています。 赤色は、ビデオ ドライバーのカーネル コード時間として予約されています。
スタック ウォーク ドット
トレースでスタック ウォークが有効になっている場合は、GPUView で実行時間の真下にドットとして表されます。 上の図では、2 つの実行時間に 3 つのスタック ウォーク ドットがあります。
非実行時間
ビューポート時間内にスレッドが作成または破棄された場合、GPUView では存在しないことが水平線で示されます。 次の図では、ビューポートの開始時刻がスレッド名の右側の縦線で表されています。 その縦線から実行領域まで引かれている横線 (赤い矢印で示しているもの) は、スレッドが存在しなかった時間を表します。