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
実行すると、以下のような情報が表示されます。
PID | USER | DISK READ | DISK WRITE | SWAPIN | IO | COMMAND |
---|
- 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_TASKSTATS
とCONFIG_TASK_IO_ACCOUNTING
が有効になっている必要があります。
カーネル設定によっては利用できない場合もあるので、動作しないときはカーネルオプションを確認してください。
bashコピーする編集するzcat /proc/config.gz | grep TASK_IO_ACCOUNTING
3. 長時間の使用には向かない
リアルタイム監視ツールなので、画面に張り付いて使うには便利ですが、長期間のログ取得や統計分析にはiostat
やpidstat
などと組み合わせると良いでしょう。
iotop以外のI/O監視ツールとの違い
ツール | 概要 | 向いている場面 |
---|---|---|
iotop | プロセス単位のリアルタイムI/O監視 | ボトルネックの特定 |
iostat | デバイス単位のI/O統計 | デバイス単位の負荷分析 |
pidstat -d | プロセスごとのI/Oを定期記録 | 長期間のI/O負荷観測 |
dstat | 複数のリソースを横断的に確認 | 総合的なパフォーマンスチェック |
まとめ
iotop
は、ディスクI/Oのボトルネックを特定したいときに非常に便利なツールです。
リアルタイムでI/Oの多いプロセスを確認し、問題の原因を突き止めることができます。
とはいえ、万能ではなく、長期的な監視には他のツールと併用するのがベストです。
Linuxサーバーの管理をしている方、パフォーマンスチューニングに関心がある方は、ぜひiotop
を活用してみてください。