iotopの正しい使い方(犯人プロセス特定編)

  • URLをコピーしました!

ディスクI/Oが逼迫し、I/O wait が高い時、

  • iostat ではディスク全体の状態は分かる
  • しかし「誰が」I/Oを出しているかは分からない

そんな時に使うのが iotop です。

本記事では、 iotopで本当に見るべきポイント犯人プロセスを誤認しないための使い方を 実務目線で解説します。

目次

結論:iotopは「継続的にI/Oを出すプロセス」を見る

iotop は瞬間値を見るツールではありません。

一定時間、上位に居座り続けるプロセスこそが 真の犯人です。

iotopとは何が分かるツールか

iotop は、 プロセス単位のディスクI/O量をリアルタイム表示します。

CPUの top と同じ感覚で、 「ディスク版 top」と考えると分かりやすいです。

事前準備:iotopのインストール

RHEL / CentOS / Rocky / Alma

yum install iotop

Ubuntu / Debian

apt install iotop

※ root 権限で実行します。

基本的な使い方(まずはこれ)

iotop

この状態で、 数十秒〜数分間 観察します。

まず確認すべき表示項目

  • DISK READ
  • DISK WRITE
  • COMMAND

READ / WRITE が継続的に高いプロセス が最優先で疑う対象です。

犯人を見誤らないための重要操作

1. アクティブなプロセスだけ表示する

iotop -o

実際にI/Oを発生させているプロセスだけが表示されます。

2. 累積I/Oを見る

iotop -a

一時的なI/Oではなく、 長時間で大量I/Oを出しているプロセス を見つけるのに有効です。

3. バッチモード(記録・確認用)

iotop -b -o -n 10

瞬間的に画面を見られない場合や、 証跡として残す時に使います。

よくある「犯人プロセス」例

ログ関連

  • rsyslogd
  • java / php-fpm(大量ログ出力)

バックアップ・圧縮

  • tar
  • gzip
  • rsync

データベース

  • mysqld
  • postgres

「犯人特定完了」と判断できる状態

以下を満たせば、 iotopでの特定は完了です。

  • 同じプロセスが継続的に上位
  • READ または WRITE が明確に高い
  • 処理内容と負荷の因果関係が説明できる

次にやるべきアクション

犯人が分かったら、 次は 対処 です。

  • ログ出力量の削減
  • 処理時間帯の変更
  • nice / ionice で優先度制御
  • ディスク構成の見直し

iotopでやってはいけない誤解

  • 一瞬だけ表示されたプロセスを犯人扱いする
  • 数秒見ただけで判断する
  • READ/WRITEを見ずにPIDだけ見る

まとめ

iotop は、 ディスクI/Oトラブル時の最重要ツールです。

正しく使えば、 「誰がサーバーを遅くしているのか」 を数字で説明できます。

本記事の使い方を押さえれば、 勘や経験に頼らず、再現性のある切り分けが可能になります。

目次