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

ディスク I/O ビューポイント

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

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

Disk Input and Output analysis (ディスク I/O 解析) で収集されたデータを解釈するには、次のステップに従います。

インテル® VTune™ Amplifier によって収集されるすべての I/O メトリック (I/O 待機時間、I/O 待機、I/O キューなど) は、ターゲットに依存せずシステム全体で収集されます。特定のターゲット・プロセッサーに関連付けられる I/O データは、I/O API 呼び出しのみです。

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

ターゲット・パフォーマンスの概要を示す [Summary (サマリー)] ウィンドウから始め、Linux* ターゲットでは、アプリケーションが I/O 依存であるかどうかに予測するのに役立つ I/O 待機時間 (I/O Wait Time) メトリックを提供します。

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

I/O 待機時間メトリックは、システム上にアイドルコアが存在する場合にスレッドが I/O 待ち状態にある時間を表し、カウントされたスレッド数はアイドルしているコア数を上回ることはありません。収集された I/O 待機時間メトリックは、[Bottom-up (ボトムアップ)] 表示の [Timeline (タイムライン)] ペインにある I/O 待機メトリックの整関数です。

ディスク I/O ヒストグラム (Disk Input and Output Histogram) までスクロールして、カーネル・サブシステムによってどれくらいの時間でストレージ要求が処理されたかを評価します。[Operation type (操作タイプ)] ドロップダウン・メニューで、調査する I/O 操作のタイプを選択します。以下の例では、write タイプの I/O 操作を選択していますが、ここでは、30 のストレージ要求が 0.03 秒を超えて実行され、インテル® VTune™ Amplifier によって低速であると識別されています。

ディスク I/O ヒストグラム

この I/O 要求タイプの詳細を取得するには、[Bottom-up] ウィンドウに切り替えます。

低速な I/O 要求を解析

[Bottom-up] ウィンドウで、下のタイムラインで注目する時間帯を選択して右クリックし、[Zoom In and Filter In by Selection (選択を拡大してフィルターイン)] コンテキスト・メニューを選択します。上部のグリッド表示とコンテキスト・サマリー・ヒストグラムが、選択された時間帯に合わせて更新されます。例えば前述の 30 個の低速な書き込み要求は、ターゲットで実行される時間帯の 5 秒から 7 秒の間で行われています。

注目する時間帯にズームすると、すべてのメトリックを絞り込んで高い I/O 待機時間の原因を特定できます。

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

ストレージデバイスに送出されている I/O 要求の数を見るには、[I/O Queue Depth (I/O キューの深さ)] を調査します。突出したグラフは要求の最大数に相当します。I/O キューの深さチャート上の値がゼロのギャップは、ストレージがまったく利用されていない瞬間を示しています。右側にある [Slow (低速)] のマークをチェックして有効にすると、I/O キューの深さメトリックは実行時に低速な I/O パケットが送出された場所を示します。

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

高い帯域幅の場所を特定するため、I/O データ転送 (I/O Data Transfer) を解析します。これは、ストレージデバイスの読み書きされたバイト数を示します。

インテル® マイクロアーキテクチャー開発コード名 Sandy Bridge EP 以降をベースとするサーバー・プラットフォームでは、インテル® VTune™ Amplifier は、タイムラインに 1 秒間に PCIe* を介して転送されたデータ量を示す PCIe* Bandwidth (PCIe* 帯域幅) メトリックを表示します。このメトリックは、アプリケーションが PCIe* バスの帯域幅の制限によりストールした時間範囲を示します。このメトリックは I/O 要求をスレッド/コア/ソケットからの要求として関連付けません (ハードウェア・イベント・ビューポイントの [Uncore Event Count (アンコア・イベント・カウント)] ウィンドウをご覧ください)。

例えば上記の例では、ターゲットのパフォーマンスは最適です。PCIe* バスを介して接続されている nvme0n1 デバイスは、PCIe* 帯域幅内で集中的に使用されています。

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

低速な I/O 要求をインストルメントされたユーザー空間のアクティビティーと関連付けます。ストレージ解析では、インテル® VTune™ Amplifier はすべてのユーザー空間の I/O 関数をインストルメントして、コールスタックが実際の API 呼び出しに対応することを可能にします。

特定の I/O API 呼び出しのタスク時間コールスタックを見るには、タイムラインで [I/O API] マークをチェックし、[Call Stack (コールスタック)] ペインのスタックを調査します。

コールスタック・ペイン

関連情報