I/O 監視
100%

プロセス利用率 · レッスン 5

I/O 監視

iostat のサンプルを使って CPU とブロックデバイスの活動を調査する方法を学びます。

一般に sysstat パッケージが提供する iostat は、CPU とブロックデバイスの活動を報告します。スループットや使用率だけでは、ストレージがユーザーから見える問題を引き起こしていると断定できません。繰り返しサンプルとアプリケーション遅延を合わせて確認してください。

有用なサンプルを収集する

1秒間隔で拡張デバイス統計を実行します。

$ iostat -xz 1

一般的な実装では、最初のレポートが起動後の平均を含み、それ以降が各区間を表します。-x は拡張フィールドを追加し、-z は非活動デバイスを省略します。正常な時間帯と問題のある時間帯を捉えるため、複数の区間を観測してください。

iostat の最初のレポートは一般に何を表しますか?

CPU フィールドを読む

CPU セクションには通常、ユーザー(%user)、システム(%system)、アイドル(%idle)、I/O 待ち(%iowait)、仮想マシンの steal(%steal)時間があります。I/O 待ちは、未完了の I/O 要求が存在する間の CPU アイドル時間であり、ディスクがビジーである割合ではありません。

%iowait は何を表しますか?

デバイスフィールドを読む

フィールド名は sysstat のバージョンによって異なりますが、重要な概念には次があります。

  • 1秒あたりの読み書き操作数またはデータ量は、ワークロードの速度を示します。
  • await は、キュー待ちとサービス時間を含む平均要求遅延を示します。
  • 平均キューサイズのフィールドは、待機中または処理中の要求を示します。
  • %util は、経過時間のうちデバイスで I/O が進行していた割合を示します。

高い %util は単純な直列デバイスの飽和を示す場合がありますが、並列ストレージ、アレイ、仮想デバイスの性能容量へそのまま換算できません。遅延をデバイス設計、ワークロードパターン、サービス目標と比較してください。

平均 I/O 要求遅延と最も直接関連するフィールドはどれですか?

証拠を相関させる

結論を出す前に、デバイス名をマウントと下位デバイスへ対応付けます。

$ lsblk -o NAME,TYPE,SIZE,FSTYPE,MOUNTPOINTS
$ findmnt

次に iostat の区間を、アプリケーション応答時間、データベースまたはファイルシステム指標、プロセス単位の I/O と照合します。Device mapper、RAID、コンテナ、ネットワーク接続ストレージは層を追加し、それぞれ固有のツールが必要になる場合があります。

デバイスで高い %util を確認した後はどうすべきですか?

レッスン完了

I/O 監視 を完了しました

iostat を I/O 調査の証拠として使えるようになりました。

  • 拡張統計を複数の区間で収集する。

  • CPU の I/O 待ちとデバイスのビジー時間を区別する。

  • 遅延、キュー、スループット、使用率を合わせて解釈する。

  • デバイスをワークロードへ対応付け、アプリケーションへの影響を検証する。

学習進捗を保存

無料アカウントを作成してこのレッスンを保存し、どのデバイスからでも学習を続けられます。

無料アカウントを作成
次のレッスン
プロセス利用率 に戻る