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

システムディスク I/O データビュー

入出力ビューポイントを使用して、I/O サブシステム、CPU およびプロセッサー・バスの使用に関するシステム全体の統計を調査し、そのデータをアプリケーションの実行と関連付けます。

これは、Windows* ではプレビュー機能です。プレビュー機能は、正式リリースに含まれるかどうか未定です。皆さんが機能に対する有用性のフィードバックを送ることで、将来の採用決定の判断に役立ちます。プレビュー機能で収集されたデータは、将来のリリースで下位互換が提供される保証はありません。parallel.studio.support@intel.com または intelsystemstudio@intel.com へフィードバックをお送りください。

デフォルトのシステムディスク I/O 設定を有効にして、入出力解析実行中に収集されたデータを解釈するには、次の手順に従ってください。

インテル® VTune™ プロファイラーによって収集されたすべての I/O メトリック (I/O 待機時間、I/O 待機、I/O キューなど) は、システム全体で収集され、ターゲット固有ではありません。特定のターゲットプロセスに分類される唯一の I/O データは、I/O API 呼び出しです。

I/O 待機時間を解析して低速な I/O パケットを特定

ターゲットの簡単なパフォーマンス概要を示す [サマリー] ウィンドウから始めます。Linux* ターゲットではアプリケーションが I/O 依存であることを判断するのに役立つ I/O 待機時間メトリックをサポートしています。

サマリーの I/O 待機時間

I/O 待機時間メトリックは、システムにアイドル状態のコアがあり、カウントされたスレッド数がアイドル状態のコア数未満である場合に、スレッドが I/O 待機状態である時間を示します。集約された I/O 待機時間メトリックは、[ボトムアップ] ビューの [タイムライン] ペインで利用可能な I/O 待機メトリックの合計です。

ディスク入出力分布図にスクロールして、カーネル・サブシステムで処理されたストレージ要求の応答性を予測します。[操作タイプ] ドロップダウン・メニューを使用して、注目する I/O 操作のタイプを選択します。例えば、I/O 操作の write タイプでは、0.06 秒を超えて実行される 2-4 個のストレージ要求は、低速であると見なされます。

ディスク入出力分布図

このタイプの I/O 要求の詳細を確認するには、[ボトムアップ] ウィンドウに切り替えます。

低速な I/O 要求を解析

[ボトムアップ] ウィンドウでは、タイムラインで注目する領域を選択して右クリックし、[選択してフィルターイン/アウト] コンテキスト・メニューを選択できます。グリッドビューとコンテキスト・サマリー分布図が更新され、選択した時間範囲のデータが表示されます。

上記の例では、ターゲット実行の 6 秒あたりで 2-3 回の低速書き込み要求が行われています。

注目する領域にズームインしてすべてのメトリックを詳しく調査し、I/O 待機時間が長い原因を理解します。

Linux* ターゲットでは、インテル® VTune™ プロファイラーはスレッドの I/O アクセスで発生した I/O 待機タイプのコンテキスト・スイッチ (スレッド領域の青いバー) を収集し、システム全体の I/O 待機メトリックを CPU アクティビティー領域で提供します。このメトリックデータを使用して、I/O と計算処理のインバランスを識別します。システム全体 I/O 待機は、システムコアがアイドル状態であり、I/O アクセスによってコンテキスト・スイッチにスレッドがある時間を示します。このメトリックデータを使用して、ストレージメディアへのパフォーマンスの依存性を予測します。例えば、100% の I/O 待機メトリック値は、システムのすべてのコアがアイドル状態ですが、それは I/O 要求によってブロックされているスレッド (CPU コア数以上の) があることを意味します。この問題を解決するには、I/O タスクと並行して計算スレッドを実行するようにアプリケーションのロジックを変更することを検討してください。もう 1 つの方法は高速なストレージを使用することです。0% の I/O 待機メトリック値は次のいずれかを示します。

I/O キューの深さ領域を調査して、ストレージデバイスに送信された I/O 要求の数を特定します。特出した表示は要求の最大数を示します。I/O キューの深さグラフのゼロ値の期間は、ストレージが全く使用されなかったことを示します。I/O キューの深さメトリックの低速マーカーを有効にして、実行中に低速な I/O パケットが実際にスケジュールされているか確認できます。

タイムライン上の低速な I/O 要求

高い帯域幅の位置を特定するには、I/O データ転送領域を解析します。これはストレージを読み書きしたバイト数を示します。

インテル® マイクロアーキテクチャー開発コード名 Sandy Bridge EP 以降を搭載するサーバー・プラットフォームでは、インテル® VTune™ プロファイラーは PCIe* バスを介して転送される 1 秒あたりのデータ量を示す PCIe* 帯域幅メトリックをタイムラインに表示します。

このデータを使用して、PCIe* バスの帯域幅の上限に近づくことでアプリケーションが停止する可能性がある時間範囲を特定します。これらのメトリックは、I/O 要求をスレッド/コア/ソケットへ関連付けません (ハードウェア・イベント・ビューポイントのアンコア・イベント・カウントを参照 )。

I/O 関数のコールスタックを解析

低速の I/O 要求をインストルメントされたユーザー空間のアクティビティーに関連付けます。ストレージ解析では、インテル® VTune™ プロファイラーはすべてのユーザー空間の I/O 関数を測定し、正確に API 呼び出しを示すコールスタックを表示できます。

特定の I/O API 呼び出しのタスク時間コールスタックを表示するには、タイムラインで必要な I/O API マーカーを選択して [コールスタック] ペインでスタックを確認します。

[コールスタック] ペイン

関連情報