iostat - CPU およびディスク I/O 統計チートシート
iostat はCPU利用率およびデバイス単位のディスク I/O 統計を報告します — スループット、IOPS、リクエストレイテンシー、キュー深度。ディスク飽和の診断時のLinuxの標準的な最初のステップです:ディスクは飽和しているか、リクエストはキューイングされているか、レイテンシーはスパイクしているか?sysstat パッケージの一部として mpstat、pidstat、sar と共に提供されます。
インストール
| プラットフォーム | コマンド |
|---|
| Debian/Ubuntu | sudo apt install sysstat |
| Fedora/RHEL | sudo dnf install sysstat |
| Arch Linux | sudo pacman -S sysstat |
| macOS | iostat はビルトイン (異なる出力) |
| 確認 | iostat -V |
基本的な使用
| コマンド | 説明 |
|---|
iostat | ブート以降の1つのレポート (CPU + デバイス) |
iostat 2 | 2秒ごとにリフレッシュ |
iostat 2 5 | 2秒間隔で5つのレポート |
iostat -x | 拡張統計 (有用なもの) |
iostat -d | デバイス統計のみ (CPUなし) |
iostat -c | CPU統計のみ |
実際に欲しいコマンド
# 拡張、人間が読める、デバイス単位、2秒ごと
iostat -xmt 2
| フラグ | 効果 |
|---|
-x | 拡張統計 (util%、await、aqu-sz、…) |
-m | MB/s でレポート (-k はKB/s) |
-t | 各レポートでタイムスタンプを印刷 |
-p DEV | デバイスのパーティション表示 (例: -p sda) |
-d 2 | 2秒ごとのデバイスレポート |
-h | 人間が読める、NVMeフレンドリーなフォーマット |
拡張出力読み込み (-x)
| カラム | 意味 |
|---|
r/s, w/s | 読み取り/書き込みリクエスト/秒 (IOPS) |
rMB/s, wMB/s | 読み取り/書き込みスループット |
rareq-sz / wareq-sz | 平均リクエストサイズ |
r_await, w_await | 平均読み取り/書き込みレイテンシー (ms) — 重要指標 |
aqu-sz | 平均キュー深度 (フライト中のリクエスト) |
%util | デバイスがビジーだった時間の割合 |
シグナルの解釈
| 観測 | 解釈 |
|---|
%util が100%に近い | デバイスが飽和 (SSD/NVMeは注意 — 並列化可能) |
高い await (数ms+) | リクエストが遅い — レイテンシーボトルネック |
高い aqu-sz | リクエストがディスク排出より高速に積み上がっている |
| 高いIOPS、低いスループット | 小さくランダムなI/O (典型的なDB/メタデータワークロード) |
| 低いIOPS、高いスループット | 大きくシーケンシャルなI/O (バックアップ、ストリーミング) |
最新のSSD/NVMeでは、%util が100%と表示される場合でもデバイスはまだヘッドルームがあります (リクエストを並列処理)。そこで await と aqu-sz を %util よりも信頼します。
CPU セクション
| フィールド | 意味 |
|---|
%user / %nice | ユーザースペースで費やされた時間 |
%system | カーネルで費やされた時間 |
%iowait | I/O待機中のCPU アイドル (ストレージプレッシャーヒント) |
%steal | ハイパーバイザーによって盗まれた時間 (うるさい隣人) |
%idle | アイドル時間 |
高い %iowait と共に高いディスク await は、ストレージがボトルネックであることを直接指します。
一般的なワークフロー
# 疑わしいディスクボトルネックをライブで監視
iostat -xmt 2
# 1つのデバイスとそのパーティションに焦点を当てる
iostat -xmt -p nvme0n1 2
# ロードテスト中にCPU iowaitをデバイスレイテンシーと相関させる
iostat -xmt 1 60 > iostat.log
iostat と関連ツール
| ツール | フォーカス |
|---|
| iostat | デバイス単位のI/O + CPU統計 |
| iotop | プロセスがI/Oを行っている |
| dstat/dool | 1つのビューの統合CPU/ディスク/ネット |
| sar | 記録される履歴/システムアクティビティ |
iostat でデバイスが遅いことを確認 → iotop でどのプロセスが責任か確認 → ionice で優先度を低下。
リソース