iotop - プロセス単位ディスク I/O モニターチートシート
iotop は、リアルタイムでプロセス単位のディスク I/O 使用状況を表示する top のようなユーティリティです。iostat がデバイスがビジーであることを示す場合、iotopはどのプロセスが読み書きしているか、どの速度で、どのI/O優先度かを示します。「今ディスクをハンマーのように殴っているのは何か」という答える最速の方法です。カーネルアカウンティングデータを読み込むため、root が必要です。
インストール
| プラットフォーム | コマンド |
|---|
| Debian/Ubuntu | sudo apt install iotop |
| Fedora/RHEL | sudo dnf install iotop |
| Arch Linux | sudo pacman -S iotop |
| 要件 | CONFIG_TASK_IO_ACCOUNTING 付きカーネル (標準) |
| 確認 | sudo iotop --version |
実行
| コマンド | 説明 |
|---|
sudo iotop | すべてのプロセスのインタラクティブライブビュー |
sudo iotop -o | 実際にI/Oをしているプロセスのみ表示 |
sudo iotop -a | 累積I/O表示 (レート、合計) |
sudo iotop -P | プロセス表示 (個別スレッドではなく) |
sudo iotop -u USER | ユーザーでフィルター |
sudo iotop -d 5 | 5秒ごとにリフレッシュ |
ディスプレイ
| カラム | 意味 |
|---|
TID/PID | スレッドまたはプロセスID |
PRIO | I/O スケジューリング優先度クラス |
USER | プロセスオーナー |
DISK READ | 現在の読み取りレート |
DISK WRITE | 現在の書き込みレート |
SWAPIN | スワップインに費やされた時間% |
IO | I/O 待機に費やされた時間% |
COMMAND | プロセスコマンドライン |
2つのヘッダーラインはシステム全体のTotal および Actual ディスク読み取り/書き込みを表示します。
インタラクティブキー
| キー | アクション |
|---|
o | --only を切り替え (アイドルプロセスを隠す) |
a | 累積対レート |
p | プロセス/スレッド |
r | ソート順を逆転 |
← / → | ソートカラムを変更 |
q | 終了 |
バッチ / ロギングモード
スクリプトおよび証拠キャプチャの場合、非インタラクティブで実行します。
# 上位I/Oプロセスをログに記録、2秒ごと、10回繰り返し、アクティブのみ
sudo iotop -boPqqq -d 2 -n 10 > iotop.log
| フラグ | 効果 |
|---|
-b | バッチ (非インタラクティブ) モード |
-o | アクティブなプロセスのみ |
-n N | 繰り返し回数 |
-q | クワイエット (ヘッダーを抑制するように繰り返す) |
-k | キロバイト |
一般的なワークフロー
# 「今誰がディスクに書き込んでいるか」— アクティブのみ、スレッドではなくプロセス
sudo iotop -oP
# 時間経過でのペリオディックI/Oスパイクをキャッチ
sudo iotop -boP -d 1 -n 60 > spikes.log
# ユーザーのプロセスのディスクロードをなすりつける
sudo iotop -oP -u appuser
I/O優先度 (ioniceとペア)
iotopは PRIO (ionice) クラスを表示します。ionice で変更します。
| ioniceクラス | 意味 |
|---|
ionice -c 1 | リアルタイムI/O優先度 |
ionice -c 2 -n 0..7 | ベストエフォート (デフォルト)、レベル0 = 最高 |
ionice -c 3 | アイドル — ディスクが他にフリーの場合のみI/O |
# 重いバッチジョブのディスク I/O を優先度低下
ionice -c 3 -p $(pgrep -n backup)
iotop と関連ツール
| ツール | 回答 |
|---|
| iotop | どのプロセスがディスク I/O をしているか |
| iostat | デバイスが飽和しているか |
| pidstat -d | プロセス単位I/O (スクリプト可能、sysstat) |
| dstat/dool | 統合システムビュー |
ワークフロー: iostat がディスクがビジーであることを示す → iotop がどのプロセスか示す → ionice でそれを優先度低下。
リソース