LinuxでI/Oボトルネックを見抜く!iotopコマンドでプロセスごとのI/O使用量を確認する方法

Linuxサーバーのパフォーマンスが低下していると感じたとき、CPUやメモリの使用率だけを見ていませんか?
意外と見落としがちなのが「ディスクI/O」の負荷です。
ディスクへの読み書きが集中すると、アプリケーションの動作が重くなったり、全体のレスポンスが遅くなったりします。

そんなときに役立つのが「iotop」というコマンドです。
iotopを使えば、どのプロセスがどれだけのI/Oリソースを使用しているのかをリアルタイムで確認できます。
この記事では、iotopの基本的な使い方から、実際の活用例、注意点までをわかりやすく解説します。


iotopとは?

iotopは、LinuxでプロセスごとのディスクI/O使用状況を監視するためのツールです。
CPUやメモリと同様に、I/O(Input/Output)の使用状況も確認することで、システム全体のパフォーマンスを把握できます。

iotopは、以下のような特徴を持ちます。

  • 各プロセスのI/O使用量をリアルタイムで表示
  • 読み込み(read)と書き込み(write)の区別が可能
  • トップ形式で情報を表示
  • root権限での実行が必要

topコマンドのI/O版といったイメージです。


iotopのインストール方法

多くのLinuxディストリビューションで、iotopはパッケージ管理ツールからインストールできます。

CentOS/RHEL系の場合

sudo yum install iotop

Ubuntu/Debian系の場合

sudo apt install iotop

インストールが完了したら、iotopコマンドで起動できます。


iotopの基本的な使い方

iotopはroot権限でのみ正確な情報を表示するため、sudoをつけて実行します。

sudo iotop

実行すると、以下のような情報が表示されます。

PIDUSERDISK READDISK WRITESWAPINIOCOMMAND
  • DISK READ/WRITE:それぞれのプロセスがどれだけのデータを読み書きしているか(KB/sやMB/sで表示)
  • SWAPIN:スワップインの割合
  • IO:I/O待ちの割合
  • COMMAND:該当プロセスのコマンド

画面は定期的に更新され、リアルタイムで情報が追跡されます。


表示をフィルタするオプションの紹介

iotopは多くのオプションを備えており、状況に応じた使い方ができます。

アクティブなプロセスのみを表示する

sudo iotop -o

I/O操作をしているプロセスのみを表示します。
何もしていないプロセスを省くことで、ボトルネックの特定がしやすくなります。

一度だけ表示する(バッチモード)

sudo iotop -b -n 1

-bはバッチモード、-nは更新回数を指定します。
スクリプトでログを取るときや、定期的に監視したいときに便利です。

特定ユーザーのプロセスだけを表示

sudo iotop -u ユーザー名

特定のユーザーに関連するプロセスのみを表示します。


実際の使用例:I/Oの原因を特定する

例1:特定のプロセスが大量に書き込んでいる

ある日、サーバーの動作が重くなったため、以下を実行。

sudo iotop -o

すると、rsyncが大量のファイルを同期中であることが判明。
I/Oリソースを使い切っていたことが原因だった。
このように、実行中のプロセスがリアルタイムで把握できるため、即座に対処できる。

例2:バッチ処理でI/Oを記録する

深夜に定期的にI/Oが上がるが原因不明。以下のようなスクリプトをcronで設定。

sudo iotop -b -n 10 -d 10 >> /var/log/iotop.log
  • -b: バッチモード
  • -n 10: 10回更新
  • -d 10: 10秒ごとに更新

ログを後から確認することで、どの時間帯に何のプロセスがI/Oを発生させていたかを追跡可能に。


iotopを使う際の注意点

1. root権限が必要

iotop/proc 以下の情報にアクセスするため、基本的にrootでの実行が必須です。
sudo権限がないユーザーでは、正確な情報が取得できません。

2. 全てのシステムで利用できるわけではない

iotopは、カーネルでCONFIG_TASKSTATSCONFIG_TASK_IO_ACCOUNTINGが有効になっている必要があります。
カーネル設定によっては利用できない場合もあるので、動作しないときはカーネルオプションを確認してください。

bashコピーする編集するzcat /proc/config.gz | grep TASK_IO_ACCOUNTING

3. 長時間の使用には向かない

リアルタイム監視ツールなので、画面に張り付いて使うには便利ですが、長期間のログ取得や統計分析にはiostatpidstatなどと組み合わせると良いでしょう。


iotop以外のI/O監視ツールとの違い

ツール概要向いている場面
iotopプロセス単位のリアルタイムI/O監視ボトルネックの特定
iostatデバイス単位のI/O統計デバイス単位の負荷分析
pidstat -dプロセスごとのI/Oを定期記録長期間のI/O負荷観測
dstat複数のリソースを横断的に確認総合的なパフォーマンスチェック

まとめ

iotopは、ディスクI/Oのボトルネックを特定したいときに非常に便利なツールです。
リアルタイムでI/Oの多いプロセスを確認し、問題の原因を突き止めることができます。

とはいえ、万能ではなく、長期的な監視には他のツールと併用するのがベストです。
Linuxサーバーの管理をしている方、パフォーマンスチューニングに関心がある方は、ぜひiotopを活用してみてください。

タイトルとURLをコピーしました