Linux iostat コマンド

Linux コマンド大全


一、iostat コマンド概要

iostat(Input/Output Statistics)は、Linuxシステムにおける強力なパフォーマンス監視ツールであり、sysstatツールパッケージの一部です。主にシステムのディスクI/OアクティビティとCPU使用状況の監視に使用されます。

1.1 基本機能

  • システムのディスクI/Oの読み書き速度を監視
  • CPU使用率を確認
  • デバイスの負荷状況を統計
  • I/O性能のボトルネックを特定

1.2 代表的な使用シーン

  • サーバー性能のチューニング
  • ストレージデバイスの性能分析
  • システムのボトルネック調査
  • 容量計画

二、インストールと基本的な使い方

2.1 インストール方法

ほとんどのLinuxディストリビューションではデフォルトでiostatがインストールされていないため、先にsysstatパッケージをインストールする必要があります:

例

# Ubuntu/Debian
sudo apt-get install sysstat

# CentOS/RHEL
sudo yum install sysstat

# Fedora
sudo dnf install sysstat

2.2 基本的なコマンド形式

例

iostat [オプション] [時間間隔] [回数]

簡単な例

例

# 全デバイスの統計情報を1回表示
iostat

# 2秒ごとに更新し、合計5回表示
iostat 2 5

三、コマンドオプションの詳細

3.1 よく使うオプション

オプション 説明
-c CPU使用状況のみ表示
-d ディスク使用状況のみ表示
-h 人間が読みやすい形式で表示(KB、MB、GBなど)
-k データをKB単位で表示
-m データをMB単位で表示
-N デバイスマッピング名を表示
-p 指定したデバイスまたはパーティションの統計情報を表示
-t タイムスタンプを表示
-x 拡張統計情報を表示
-y 最初の統計をスキップ(通常は時間間隔と一緒に使用)

3.2 上級オプション

オプション 説明
-z アクティビティがゼロのデバイスの出力を省略
-j ID 指定したデバイスの永続名を表示
--dec={0|1|2} 小数点以下の桁数を指定

四、出力結果の解釈

4.1 CPU統計部分

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.32    0.00    1.06    0.25    0.00   93.37
  • %user:ユーザーレベル(アプリケーション)のCPU使用率
  • %nice:優先度が調整されたプロセスのCPU使用率
  • %system:システムレベル(カーネル)のCPU使用率
  • %iowait:CPUがI/O操作の完了を待機する時間の割合
  • %steal:仮想環境における「奪われた」時間
  • %idle:CPUアイドル時間の割合

4.2 ディスク統計部分(基本)

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.02        12.34         5.67    1234567     567890
  • tps:毎秒の転送回数(transfers per second)
  • kB_read/s:毎秒の読み取りデータ量(KB)
  • kB_wrtn/s:毎秒の書き込みデータ量(KB)
  • kB_read:読み取りの総データ量(KB)
  • kB_wrtn:書き込みの総データ量(KB)

4.3 拡張統計情報(-xオプション)

Device:  rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda       0.00     0.50    1.00    0.50    12.00     4.00    21.33     0.02   10.00    8.00   14.00   6.00   0.90
  • rrqm/s:毎秒のマージされた読み取りリクエスト数
  • wrqm/s:毎秒のマージされた書き込みリクエスト数
  • r/s:毎秒完了した読み取りI/Oの回数
  • w/s:毎秒完了した書き込みI/Oの回数
  • rkB/s:毎秒の読み取りKB数
  • wkB/s:毎秒の書き込みKB数
  • avgrq-sz:平均I/O操作ごとのデータサイズ(セクター)
  • avgqu-sz:平均I/Oキューの長さ
  • await:平均I/O操作ごとの待機時間(ミリ秒)
  • r_await:読み取り操作の平均待機時間(ミリ秒)
  • w_await:書き込み操作の平均待機時間(ミリ秒)
  • svctm:平均I/O操作ごとのサービス時間(ミリ秒)
  • %util:デバイスの帯域幅使用率の割合

五、実用的なサンプル分析

5.1 特定のディスクを監視

例

# sdaディスクを監視し、2秒ごとに更新、合計3回表示
iostat -d -x sda 2 3

5.2 CPUとディスクの総合監視

例

# CPUとディスクを監視し、5秒ごとに更新、継続表示
iostat -c -d -x -t 5

5.3 MB単位で表示

例

# ディスク統計情報をMB単位で表示
iostat -d -m

5.4 すべてのパーティションを監視

例

# LVMを含むすべてのパーティションを監視
iostat -p ALL

六、性能指標の解釈と最適化の提案

6.1 重要な性能指標

  1. %util:デバイス使用率

    • 80% はデバイスが飽和状態に近いことを示す

    • 継続的に100% はデバイスがボトルネックになっていることを示す
  2. await:I/O待機時間

    • 通常は < 10ms であるべき
    • 50ms は性能問題の可能性を示す

  3. avgqu-sz:キューの長さ

    • 1 はデバイスが過負荷の可能性を示す

6.2 よくある問題の診断

問題1:%utilが高いがスループットが低い

  • 考えられる原因:ランダムI/Oが多すぎる
  • 解決策:アプリケーションのI/Oパターンを最適化し、SSDの使用を検討する

問題2:awaitが高いが%utilが低い

  • 考えられる原因:コントローラーまたはバスのボトルネック
  • 解決策:HBAカードまたはストレージコントローラーを確認する

問題3:rkB/sまたはwkB/sが異常に高い

  • 考えられる原因:アプリケーションによる大量の読み書き
  • 解決策:アプリケーションを最適化するかキャッシュを増やす

七、他のツールとの連携

7.1 vmstatとの組み合わせ

例

# メモリとI/Oを同時に監視
vmstat 1 5 & iostat -x 1 5

7.2 sarとの組み合わせ

例

# 履歴I/Oデータを確認
sar -d

7.3 iotopとの組み合わせ

例

# 具体的な高I/Oプロセスを特定
iotop

八、まとめとベストプラクティス

8.1 使用上のアドバイス

  1. 本番環境での監視時は、詳細データを取得するために-xオプションの使用を推奨
  2. 長期監視ではsarと組み合わせて履歴データを収集すべき
  3. 性能問題を分析する際は、CPUとI/Oのデータを同時に注視すべき
  4. 異なる時間帯の統計データを比較する方がより有意義

8.2 よく使うコマンドの組み合わせ

例

# 総合監視コマンド
iostat -c -d -x -t -m 5

# ディスクの拡張情報のみ監視
iostat -d -x 2

# 特定のパーティションを監視
iostat -p sda1 -x 1 10

iostatコマンドを習得することで、システム管理者はLinuxシステムのI/O性能を効果的に監視・分析し、ストレージ関連の性能ボトルネック問題を迅速に発見して解決できます。

Linux コマンド大全

その他の拡張