Linux iotop コマンド
iotopは、topコマンドに似たLinuxシステム監視ツールですが、ディスクI/O使用状況の表示に特化しています。システム内の各プロセスのディスク読み書きアクティビティをリアルタイムで監視し、システム管理者がI/O集中プロセスを特定するのに役立ちます。
iostatなどのツールとは異なり、iotopはプロセスベースのI/O監視を提供し、各プロセスの読み書き速度と累計I/O量を正確に把握できます。
iotopのインストール
ほとんどのLinuxディストリビューションではデフォルトでiotopがインストールされていないため、手動でインストールする必要があります:
実例
sudo apt-get install iotop
# RHEL/CentOS系
sudo yum install iotop
# Fedora系
sudo dnf install iotop
# Arch Linux
sudo pacman -S iotop
基本構文
iotopの基本的なコマンド形式は次のとおりです:
sudo iotop [选项]
注意:iotopはカーネルのI/O統計情報へのアクセスが必要なため、実行にはroot権限が必要です。
よく使うオプションとパラメータ
| オプション | 説明 |
|---|---|
-o 或 --only |
実際にI/O操作を行っているプロセスのみ表示 |
-b 或 --batch |
非インタラクティブモード。スクリプトでの使用に適しています |
-n NUM |
非インタラクティブモードで実行する反復回数 |
-d SEC |
更新間隔(秒)を設定します |
-p PID |
指定したPIDのプロセスのみ監視 |
-u USER |
指定したユーザーのプロセスのみ監視 |
-P 或 --processes |
プロセスのみ表示し、スレッドは表示しない |
-a 或 --accumulated |
帯域幅ではなく累計I/Oを表示 |
-k 或 --kilobytes |
単位としてB/sではなくKB/sを使用 |
-t 或 --time |
出力にタイムスタンプを追加 |
-q 或 --quiet |
ヘッダー情報を削減(非インタラクティブモードでは自動的に有効) |
インタラクティブモードのショートカットキー
インタラクティブモードでは、iotopは以下のショートカットキー操作をサポートしています:
| ショートカットキー | 機能 |
|---|---|
| 左右の矢印キー | ソートフィールドを変更 |
| r | 逆順にソート |
| o | アクティブなI/Oプロセスのみ表示(-oオプションに相当) |
| p | プロセス/スレッド表示モードの切り替え |
| a | 累計/リアルタイム表示モードの切り替え |
| q | iotopを終了 |
| i | 優先度フィルターを変更(より高い優先度のプロセスのみ表示) |
| 任意のキー | 表示を強制的に更新 |
出力フィールドの説明
iotopの出力には複数のフィールドが含まれ、各フィールドの意味は次のとおりです:
- TID/PID:スレッドID/プロセスID
- PRIO:I/O優先度(Linuxのionice値)
- USER:プロセスの所有者
- DISK READ:ディスク読み取り速度
- DISK WRITE:ディスク書き込み速度
- SWAPIN:スワップ領域使用率
- IO>:I/O使用率
- COMMAND:プロセス名
使用例
例1: 基本モニタリング
sudo iotop
これによりインタラクティブな画面が起動し、すべてのプロセスのI/OアクティビティがI/O使用量順に表示されます。
例2: アクティブなI/Oプロセスのみ表示
sudo iotop -o
またはiotop実行後にoキーを押すと、現在I/O操作を行っているプロセスのみが表示されます。
例3: 特定ユーザーのプロセスを監視
sudo iotop -u apache
apacheユーザーのプロセスのI/Oアクティビティのみを監視します。
例4: 非インタラクティブモードの出力
sudo iotop -b -n 3 -d 2
非インタラクティブモードで実行し、2秒ごとに更新、合計3回出力して終了します。
例5: 特定のプロセスを監視
sudo iotop -p 1234
PID 1234のプロセスのI/Oアクティビティのみを監視します。
実際の活用シナリオ
シナリオ1: システムが遅くなる原因を特定する
システムの応答が遅くなった場合、以下を実行します:
sudo iotop -o
どのプロセスがディスクへの大量読み書きを行い、システムのI/Oボトルネックを引き起こしているかをすばやく特定できます。
シナリオ2: データベースのパフォーマンスを監視
MySQLなどのデータベースサーバーの場合:
sudo iotop -u mysql -o
mysqlユーザーのI/Oアクティビティを専用に監視し、データベースのディスク負荷を分析します。
シナリオ3: I/O状況を定期的に記録
sudo iotop -b -t -n 5 -d 10 > iotop_log.txt
10秒ごとにI/O状況を記録し、合計5回記録して、結果をファイルに保存して後で分析します。
注意事項
- iotopでは、カーネルがI/Oアカウンティング機能をサポートしている必要があります。比較的新しいLinuxカーネルでは通常有効になっています。
- 一部の仮想化環境では、iotopがI/O統計情報を正確に報告できない場合があります。
- 頻繁な更新(間隔が1秒未満など)はシステムパフォーマンスに影響を与える可能性があります。
- 累計I/O統計(-aオプション)はシステム再起動後にリセットされます。
- SSDデバイスの場合、高いI/O待ち時間はデバイスが性能限界に達していることを示す可能性があります。
代替ツール
iotopが利用できない場合は、以下の代替案を検討できます:
- dstat:総合パフォーマンス監視ツール。ディスクI/O統計を含む
- atop:高度なシステム監視ツール。プロセスレベルのI/O統計を含む
- nmon:AIX/Linuxパフォーマンス監視ツール
- pidstat:sysstatツールパッケージの一部で、プロセスI/Oを報告できます
まとめ
iotopは、Linuxシステム管理者がディスクI/Oアクティビティを監視するための強力なツールです。プロセスレベルのI/O監視により、パフォーマンスのボトルネックをすばやく特定できます。iotopの使用方法を習得することで、ディスクI/O関連のシステムパフォーマンス問題を効果的に診断・解決できます。
その他の拡張