システムの入力と出力、または短い I/O、帯域幅の使用状況のライブ ビューを取得するには、iotop と入力します。 iotop は root ユーザーで開始する必要があります。たとえば、iotop を使用して、ハードディスクの読み書き速度を調べてから、q キーを押して終了します。 iotop のマニュアル セクションを読んで、列の並べ替えなどのショートカットの詳細を確認してください。
iotop はほとんどの Linux ディストリビューションにプリインストールされていないため、パッケージ マネージャーを使用してインストールする必要があります。たとえば、CentOS/RHEL ベースのシステムでは、以下のコマンドを使用して iotop パッケージをインストールします:
# yum install iotop
以下のコマンドを使用して、iotop ユーティリティを実行します:
# iotop
次の例のような出力が表示されます:
Total DISK READ : 0.00 B/s | Total DISK WRITE : 88.95 M/s Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 88.95 M/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 27236 be/4 root 0.00 B/s 88.95 M/s 0.00 % 87.91% dd if=/dev/zero of=test.zero bs=1024k count=1000 oflag=direct conv=notrunc 25600 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % less -s 1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % systemd --switched-root --system --deserialize 22 2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd] 3 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0] 6 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/u30:0] 7 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_sched]
ここに示されているコラムのうち、以下に関心があるかもしれません:
- TID :この列は、I/O 要求を行うプロセスの PID を提供します。これは、プログラムの調査または終了に使用できます。
- ディスク読み取り :この列は、リストされたプロセスによって読み取られた 1 秒あたりのバイト数を示します。
- ディスク書き込み :この列は、リストされたプロセスによって 1 秒あたりに書き込まれたバイト数を示します。
- IO :この列には、リストされたプロセスが I/O リクエストの発行に費やした時間の割合が表示されます。
- コマンド :この列は、I/O を処理するプロセスの名前を示します。これがマスター プロセスである場合は、コマンドライン スイッチも含まれる場合があります。
引数なしで iotop を実行すると、ディスク I/O アクティビティに関係なく、既存のすべてのプロセスのリストが表示されるため、ディスク I/O アクティビティにコミットされているプロセスのみを iotop に報告させたい場合は、代わりに次を使用する必要があります。
# iotop –o
iotop コマンドの例
1. 継続的に監視するには、次のコマンドを使用します:
# iotop -o
-o オプションは、実行中にアクティブな I/O を実行しているプロセスのみを表示するように iotop に指示し、出力のノイズを減らします。
2. -n オプションは、iotop に N 回実行して終了するように指示します:
# iotop -b -n 2
3. -p オプションは、特定のプロセスを監視します:
# iotop -p PID
ここで、PID は監視するプロセスです。
4. 最近のほとんどのディストリビューションでは、PID を見つけて iotop に提供する代わりに、pidof コマンドを使用して、前のコマンドを次のように記述できます。
# iotop -p `pidof cp`
5. -o フラグと一緒に、これらのフラグを使用して、次の反復のために画面をクリアせずに I/O を使用するプロセスのみを印刷するように iotop に指示できます。
# iotop -o -q -n2
デフォルトでは、iotop の反復間の遅延は 1 秒です。ただし、これは -d (遅延) フラグで変更できます。
6. iotop の詳細については、次のようなマニュアルを参照してください。
$ man iotop
まとめ
すべての管理者は、大量のディスク I/O アクティビティの結果としてシステムの速度が低下し始める可能性があることを知っています。ただし、トラブルシューティング担当者の役割では、おそらく、どのプロセスまたは (マルチユーザー システムの場合) どのユーザーが犯人であるかを知りたいと思うでしょう。この理由から、iotop に頼る必要があります。このツールは、最も I/O を集中的に使用するプロセスのリストを、top のようなインターフェースでリアルタイムに表示します。