コンテンツにスキップ

iotop - プロセス単位ディスク I/O モニターチートシート

iotop - プロセス単位ディスク I/O モニターチートシート

iotop は、リアルタイムでプロセス単位のディスク I/O 使用状況を表示する top のようなユーティリティです。iostatデバイスがビジーであることを示す場合、iotopはどのプロセスが読み書きしているか、どの速度で、どのI/O優先度かを示します。「今ディスクをハンマーのように殴っているのは何か」という答える最速の方法です。カーネルアカウンティングデータを読み込むため、root が必要です。

インストール

プラットフォームコマンド
Debian/Ubuntusudo apt install iotop
Fedora/RHELsudo dnf install iotop
Arch Linuxsudo 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 55秒ごとにリフレッシュ

ディスプレイ

カラム意味
TID/PIDスレッドまたはプロセスID
PRIOI/O スケジューリング優先度クラス
USERプロセスオーナー
DISK READ現在の読み取りレート
DISK WRITE現在の書き込みレート
SWAPINスワップインに費やされた時間%
IOI/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 でそれを優先度低下。

リソース