【Linux】リソース使用率の確認(iotopコマンド使用方法・各項目の見方)

最終更新日 2024年10月25日

iotopコマンド使用方法・各項目の見方

キャパシティープランニングとは

キャパシティープランニングを行う際、今後構築しようとしているシステムがどのくらいの
リソースを必要とするのか確認するためにも、現在のリソースの使用状況を
確認する必要があります。

そこで、役に立つコマンドの1つである iotopコマンドを今回紹介いたします。

キャパシティープランニングについては以下の記事で紹介しているので確認してみてください!

iotopについて

iotopコマンドとは

iotopコマンドは、ディスクのI/O(読み書き)情報を、プロセスごとに表示させることが出来るコマンドです。

iotopコマンドは、プロセスごとに、ディスクのI/O情報を表示させることが出来るため、
ディスクI/Oの負荷が高いプロセスを特定することが出来ます。

iotopコマンドのインストール方法

iotopコマンドは、以下のコマンドでインストールすることが出来ます。

[root@localhost test]# yum -y install iotop

yumコマンドの「-y」オプションは、yumコマンドを実行した際の、問い合わせに対して
すべてyesと答えるというオプションです。

実際に実行した結果は以下です。

[root@localhost test]# yum -y install iotop
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * extras: ftp.riken.jp
 * updates: ftp.riken.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ iotop.noarch 0:0.6-4.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

=======================================================================================
 Package            アーキテクチャー    バージョン             リポジトリー       容量
=======================================================================================
インストール中:
 iotop              noarch              0.6-4.el7              base               52 k

トランザクションの要約
=======================================================================================
インストール  1 パッケージ

総ダウンロード容量: 52 k
インストール容量: 156 k
Downloading packages:
iotop-0.6-4.el7.noarch.rpm                                      |  52 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : iotop-0.6-4.el7.noarch                                 1/1 
  検証中                  : iotop-0.6-4.el7.noarch                                 1/1 

インストール:
  iotop.noarch 0:0.6-4.el7                                                             

完了しました!

念のためバージョンも確認しておきます。

[root@localhost test]#  iotop --version
iotop 0.6
[root@localhost test]# 

iotopコマンドのオプション

iotopコマンドで使用できるオプションの説明を記載します。

オプション説明
--versioniotopコマンドのプログラムのバージョンを表示する。
-h, --helpヘルプメッセージ(コマンドの使い方、オプション)を表示させる。
-o, --only実際にI/O(読み書き)を実行しているプロセスのみを表示する。
-b, --batchバッチモードで表示させる。
表示間隔ごとに、新たな行に画面を更新します。
※ログを取得する際に使用。
-n 回数, --iter=回数実行回数の指定。
回数で指定した回数だけiotopコマンドを実行します。
-d 秒, --delay=秒実行間隔の遅延 [秒]。
秒で指定した間隔でiotopコマンドを実行します。
-p PID, --pid=PID指定したプロセスだけを表示。
-u USER, --user=USER指定したユーザーが実行するプロセスを表示。
-P, --processesスレッドIDなど、一部の項目を表示しない。
-a, --accumulated帯域幅の代わりに累積I/Oを表示する。
-k, --kilobytes単位にキロバイト(KB)を使用する。
-t, --time各行にタイムスタンプを追加する。
※バッチモードになります。
-q, --quietヘッダーをいくつか省略して表示します。
※バッチモードになります。

iotopコマンドのトグルキー

iotopコマンドで使用できるトグルキーについて説明します。

トグルキー意味
r選択した項目の表示の順番を逆にします。
「r」を入力後、↓の項目が選択できるようになります。
「TID」「 PRIO>」「USER」「DISKREAD」「 DISKWRITE」「 SWAPIN 」「 IO」 「COMMAND 」
選択した項目に対して、表示される順番が逆になります。
再度「r」を押下すると元に戻ります。
oI/O(読み書き)を実行しているプロセス・スレッドのみ表示する。
pプロセスのみ表示し、スレッドは表示しない。
a帯域ではなく累積値を表示する。
qiotopコマンドを終了する。
iプロセス/スレッドの優先度変更する。
「i」を入力後、「TID to ionice」という項目が表示されるので、優先度を変更したい
プロセスのPIDを入力します。
すると、「I/O priority class」で優先度を3段階から選択でき、選択後、
「I/O priority data」という項目が表示され、8段階(0~7)で優先度を入力し、
優先度を変更することが出来ます。

iotopコマンドの各項目の見方

iotopコマンドの出力結果の各項目の見方について説明します。

以下が実際のiotopコマンドの出力結果です。

[root@localhost test]# iotop 
(1)Total DISK READ :       0.00 B/s | (2)Total DISK WRITE :       0.00 B/s
(3)Actual DISK READ:       0.00 B/s | (4)Actual DISK WRITE:       0.00 B/s
(5)TID(6)PRIO(7)USER     (8)DISK READ(9)DISK WRITE(10)SWAPIN(11)IO   (12)COMMAND
  2048   be/4   test        0.00 B/s    0.00 B/s      0.00 %    0.00 %   xdg-permission-store [gmain]
     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/0   root        0.00 B/s    0.00 B/s      0.00 %    0.00 %   [rcu_gp]
項目説明
(1)ディスクの読み取り帯域幅の合計
(2)ディスクの書き込み帯域幅の合計
(3)カーネル ブロック デバイスとハードウェア (HDD、SSD など) 間の,、
実際のディスク I/O に対応する読み取り帯域幅を表します。
※Linux カーネル内で行われるデータのキャッシングと I/O 操作の並べ替えにより、
合計値と実際の値は、任意の時点で等しくない場合があります。
(4)カーネル ブロック デバイスとハードウェア (HDD、SSD など) 間の,、
実際のディスク I/O に対応する書き込み帯域幅を表します。
※Linux カーネル内で行われるデータのキャッシングと I/O 操作の並べ替えにより、
合計値と実際の値は、任意の時点で等しくない場合があります。
(5)スレッドID。プロセスIDと同等のもの。
(6)プロセスのプライオリティ。
0~7の8段階。
(7)プロセスを実行しているユーザー。
(8)プロセスの読み込み帯域幅。
(9)プロセスの書き込み帯域幅。
(10)プロセスが使用している、全体に占めるスワップインの割合。
スワップインとは、メモリが足りなくなったときに、スワップアウトで
(ハードディスクの一部を一時的にメモリとして使用し、
メモリの情報をハードディスクに退避させるが、)
一度退避させたデータを、もとのメモリに戻すこと。
(11)プロセスが使用している、全体に占めるI/Oの割合。
(12)実行しているコマンドのパス。