pidstat は PID 統計の略です。
このツールは、カーネルによって管理される個々のプロセスを監視し、レポートを生成できます。特定の PID (プロセス ID)、またはシステムで実行されているすべてのプロセスを監視できます。
pidstat は sysstat ユーティリティの一部です。
このツールは、プロセスによって使用される CPU、プロセスのディスク使用統計、選択したタスクおよび子プロセスに関連付けられたスレッドの統計など、さまざまな統計を報告します。
このコマンドを使用するには、sysstat パッケージをインストールする必要があります。
yum install sysstat
1.実行中のすべてのプロセス (または特定のプロセス) の統計を表示
以下に示すように、-p ALL オプションを使用して、実行中のすべてのプロセスのパフォーマンス統計を表示します。
デフォルトでは、CPU 使用率が表示されます。ただし、後の例で示すように、これを他のパフォーマンス統計に変更できます。
# pidstat -p ALL | wc -l 165 # pidstat -p ALL | head Linux 3.0.101-0.7.17-default (thegeekstuff) 07/30/14 _x86_64_ 05:00:03 PID %usr %system %guest %CPU CPU Command 05:00:03 1 0.00 0.00 0.00 0.00 0 init 05:00:03 2 0.00 0.00 0.00 0.00 0 kthreadd 05:00:03 3 0.00 0.00 0.00 0.00 0 ksoftirqd/0 05:00:03 6 0.00 0.00 0.00 0.00 0 migration/0 05:00:03 7 0.00 0.00 0.00 0.00 0 watchdog/0 05:00:03 8 0.00 0.00 0.00 0.00 0 cpuset 05:00:03 9 0.00 0.00 0.00 0.00 0 khelper
以下に示すように、-p PID を使用して、特定のプロセスのパフォーマンス統計を監視します。
# pidstat -p 13203 Linux 3.0.101-0.7.17-default (thegeekstuff) 07/30/14 _x86_64_ 05:04:29 PID %usr %system %guest %CPU CPU Command 05:04:29 13203 0.00 0.00 0.00 0.00 0 vim
systat パッケージを初めて使用する場合は、sar コマンドによって提供されるパフォーマンス統計データについても理解する必要があります。
2. -C を使用してプロセス名に基づくパフォーマンス統計を表示
次の例は、特定のキーワード (例:mysql) に一致するすべてのプロセスのパフォーマンス統計を表示します。
# pidstat -C "mysql" Linux 3.0.101-0.7.17-default (thegeekstuff) 07/30/14 _x86_64_ 06:33:14 PID %usr %system %guest %CPU CPU Command 06:33:14 23132 0.00 0.00 0.00 0.00 0 mysqld_safe 06:33:14 23493 0.06 0.02 0.00 0.08 0 mysqld
注:上記の例で、オプション -C は「コマンド名」を表します。つまり、指定されたキーワードでプロセスのコマンド名を検索します。
3.一定間隔で出力を繰り返す
デフォルトでは、出力は繰り返されません。たとえば、オプション -u はタスクの CPU 使用率の統計を表示するためのもので、これは pidstat コマンドによって提供されるデフォルトの統計です。これにより、出力が 1 回だけ表示されます。
# pidstat -p 23493 Linux 3.0.101-0.7.17-default (thegeekstuff) 07/30/14 _x86_64_ 06:52:35 PID %usr %system %guest %CPU CPU Command 06:52:36 23493 1.00 0.00 0.00 1.00 0 mysqld
出力を繰り返すには、最後のパラメーターとして間隔を秒単位で指定します。たとえば、次の例では、(Ctrl-C を押すまで) 1 秒ごとに出力が繰り返されます。
# pidstat -p 23493 1 Linux 3.0.101-0.7.17-default (thegeekstuff) 07/30/14 _x86_64_ 06:52:35 PID %usr %system %guest %CPU CPU Command 06:52:36 23493 1.00 0.00 0.00 1.00 0 mysqld 06:52:37 23493 0.00 0.00 0.00 0.00 0 mysqld 06:52:38 23493 0.00 0.00 0.00 0.00 0 mysqld 06:52:39 23493 0.00 0.00 0.00 0.00 0 mysqld 06:52:40 23493 0.00 0.00 0.00 0.00 0 mysqld 06:52:41 23493 0.00 0.00 0.00 0.00 0 mysqld ..
以下は、出力を 5 秒ごとに繰り返します (Ctrl-C を押すまで)。
# pidstat -p 23493 5
4. -d を使用して特定のプロセスの I/O 統計を表示する
オプション -d を使用して、プロセスの I/O 統計を報告します。出力には、以下に示すように、PID、ディスクの読み取り速度と書き込み速度 (kB/s) などのさまざまな属性が表示されます。
次の例では、PID 23493 のディスク使用量を 1 秒ごとに表示します。
# pidstat -p 23493 -d 1 Linux 3.0.101-0.7.17-default (thegeekstuff) 07/30/14 _x86_64_ 06:48:33 PID kB_rd/s kB_wr/s kB_ccwr/s Command 06:48:34 23493 0.00 0.00 0.00 mysqld 06:48:35 23493 0.00 0.00 0.00 mysqld 06:48:36 23493 0.00 0.00 0.00 mysqld 06:48:37 23493 0.00 0.00 0.00 mysqld 06:48:38 23493 0.00 0.00 0.00 mysqld 06:48:39 23493 0.00 0.00 0.00 mysqld 06:48:40 23493 0.00 0.00 0.00 mysqld 06:48:41 23493 0.00 0.00 0.00 mysqld
5. -r を使用して特定のプロセスのページング アクティビティを表示する
オプション -r を使用して、特定のタスク (PID) のページ フォールトとメモリ使用率を表示します。
# pidstat -p 23493 -r 1 Linux 3.0.101-0.7.17-default (thegeekstuff) 07/30/14 _x86_64_ 06:58:48 PID minflt/s majflt/s VSZ RSS %MEM Command 06:58:49 23493 0.00 0.00 398876 33468 3.28 mysqld 06:58:50 23493 0.00 0.00 398876 33468 3.28 mysqld 06:58:51 23493 0.00 0.00 398876 33468 3.28 mysqld 06:58:52 23493 0.00 0.00 398876 33468 3.28 mysqld 06:58:53 23493 0.00 0.00 398876 33468 3.28 mysqld 06:58:54 23493 0.00 0.00 398876 33468 3.28 mysqld 06:58:55 23493 0.00 0.00 398876 33468 3.28 mysqld
6.オプション -l を使用してコマンド名とその引数を表示
デフォルトでは、pidstat はコマンド名のみを表示します。つまり、コマンドとその引数のフルパスなし。たとえば、コマンド列には「java」のみが表示されます (これは単なるプログラムの名前です)。
$ pidstat -C java Linux 3.0.101-0.7.17-default (thegeekstuff) 07/30/14 _x86_64_ 11:00:25 PID %usr %system %guest %CPU CPU Command 11:00:25 3288 0.04 0.03 0.00 0.07 0 java 11:00:25 17861 0.03 0.02 0.00 0.05 6 java
ただし、オプション -l を使用すると、以下に示すように、コマンドのフル パスとそのすべての引数が表示されます。
$ pidstat -C java -l Linux 3.0.101-0.7.17-default (thegeekstuff) 07/30/14 _x86_64_ 11:00:31 PID %usr %system %guest %CPU CPU Command 11:00:31 3288 0.04 0.03 0.00 0.07 0 /usr/bin/java -Djava.util.logging.config.file=/home/tomcat/apache-tomcat-7.0.56/conf/logging.properties 11:00:31 17861 0.03 0.02 0.00 0.05 6 java -jar /home/rabbit/myapp.jar /home/app/conf/myapp.conf
タスクの定期的な間隔で統計を取得するには、統計を表示する秒数を渡すだけです。
# pidstat -p 23493 1 Linux 3.0.101-0.7.17-default (thegeekstuff) 07/30/14 _x86_64_ 06:25:50 PID %usr %system %guest %CPU CPU Command 06:25:51 23493 0.00 0.00 0.00 0.00 0 mysqld 06:25:52 23493 0.00 0.00 0.00 0.00 0 mysqld
上記のように、mysqld プロセスの統計を 1 秒ごとに監視します。
また、トップ コマンド出力からいくつかのプロセス ID を取得し、ここでそれを見て、システム リソースの定期的な使用状況を理解することもできます。
7.出力を一定間隔で X 回表示
以下に示すように、プロセスのリストに対して、一定間隔で一定回数のレポートを取得することもできます。
最後のパラメーターとして回数を追加します (秒単位の間隔の後)。
たとえば、次の例では、出力が 5 回 (2 秒間隔で) 表示されます。レポートの最後には、「平均」値も表示されます。
# pidstat 2 5 Linux 3.0.101-0.7.17-default (thegeekstuff) 07/30/14 _x86_64_ 07:14:11 PID %usr %system %guest %CPU CPU Command 07:14:13 1445 0.00 0.50 0.00 0.50 0 pidstat 07:14:13 28222 0.50 0.00 0.00 0.50 0 cma 07:14:13 PID %usr %system %guest %CPU CPU Command 07:14:15 1445 0.00 0.50 0.00 0.50 0 pidstat 07:14:15 28222 0.00 0.50 0.00 0.50 0 cma 07:14:15 PID %usr %system %guest %CPU CPU Command 07:14:17 1445 0.50 0.00 0.00 0.50 0 pidstat 07:14:17 19614 0.00 0.50 0.00 0.50 0 nailswebd 07:14:17 PID %usr %system %guest %CPU CPU Command 07:14:19 1445 0.50 0.50 0.00 1.00 0 pidstat 07:14:19 PID %usr %system %guest %CPU CPU Command 07:14:21 1445 0.00 0.51 0.00 0.51 0 pidstat 07:14:21 28222 0.00 0.51 0.00 0.51 0 cma Average: PID %usr %system %guest %CPU CPU Command Average: 1445 0.20 0.40 0.00 0.60 - pidstat Average: 19614 0.00 0.10 0.00 0.10 - nailswebd Average: 28222 0.10 0.20 0.00 0.30 - cma
8. -T を使用して、選択したプロセスとその子の統計を表示します
オプション -T を使用して、CHILD または TASKS を指定します。この場合、統計は TASKS、またはタスクとそのすべての子について報告されます。 ALL を指定することもできます。
-T の可能な値:CHILD、または TASKS、または ALL。
# pidstat -T CHILD | head Linux 3.0.101-0.7.17-default (thegeekstuff) 07/30/14 _x86_64_ 10:13:34 IST PID usr-ms system-ms guest-ms Command 10:13:34 IST 1 7950 3340 0 init 10:13:34 IST 3 0 420 0 ksoftirqd/0 10:13:34 IST 8 0 10 0 migration/0 10:13:34 IST 10 0 1190 0 rcu_sched 10:13:34 IST 11 10 0 0 watchdog/0 10:13:34 IST 12 10 0 0 watchdog/1 10:13:34 IST 13 0 450 0 ksoftirqd/1
9. -t を使用して依存プロセスの統計をツリー形式で表示
オプション -t を使用すると、以下に示すように出力をツリー形式で表示できます。
# pidstat -t -C "mysql" Linux 3.0.101-0.7.17-default (thegeekstuff) 07/30/14 _x86_64_ 18:47:54 PID TID %usr %system %guest %CPU CPU Command 18:47:54 1646 - 0.00 0.00 0.00 0.00 0 mysql 18:47:54 - 1646 0.00 0.00 0.00 0.00 0 |__mysql 18:47:54 23132 - 0.00 0.00 0.00 0.00 0 mysqld_safe 18:47:54 - 23132 0.00 0.00 0.00 0.00 0 |__mysqld_safe 18:47:54 23493 - 0.06 0.02 0.00 0.08 0 mysqld 18:47:54 - 23493 0.00 0.00 0.00 0.00 0 |__mysqld 18:47:54 - 23504 0.00 0.00 0.00 0.00 0 |__mysqld 18:47:54 - 23509 0.00 0.00 0.00 0.00 0 |__mysqld 18:47:54 - 23510 0.00 0.00 0.00 0.00 0 |__mysqld 18:47:54 - 23512 0.00 0.00 0.00 0.00 0 |__mysqld 18:47:54 - 23515 0.00 0.00 0.00 0.00 0 |__mysqld 18:47:54 - 23516 0.01 0.00 0.00 0.02 0 |__mysqld 18:47:54 - 23517 0.00 0.00 0.00 0.00 0 |__mysqld 18:47:54 - 23518 0.01 0.01 0.00 0.02 0 |__mysqld 18:47:54 - 23519 0.00 0.00 0.00 0.00 0 |__mysqld ..
10. -h を使用してすべての統計を 1 行に水平方向に表示
複数の統計を報告するように pidstat を指定すると、次の統計の後に 1 つの統計が表示されます。次の例では、最初にオプション「r」、次にオプション「u」、最後にオプション「d」のパフォーマンス統計を表示します。
# pidstat -rud
ただし、個々のプロセスのすべての統計を 1 行で表示する場合は、以下に示すようにオプション -h を使用してください。
# pidstat -rud -h | head Linux 3.0.101-0.7.17-default (thegeekstuff) 07/30/14 _x86_64_ # Time PID %usr %system %guest %CPU CPU minflt/s majflt/s VSZ RSS %MEM kB_rd/s kB_wr/s kB_ccwr/s Command 1406823329 1 0.04 0.19 0.00 0.24 2 21.50 0.03 26944 2768 0.07 -1.00 -1.00 -1.00 init 1406823329 3 0.00 0.03 0.00 0.03 0 0.00 0.00 0 0 0.00 -1.00 -1.00 -1.00 ksoftirqd/0 1406823329 8 0.00 0.00 0.00 0.00 0 0.00 0.00 0 0 0.00 -1.00 -1.00 -1.00 migration/0 1406823329 10 0.00 0.08 0.00 0.08 2 0.00 0.00 0 0 0.00 -1.00 -1.00 -1.00 rcu_sched 1406823329 13 0.00 0.03 0.00 0.03 1 0.00 0.00 0 0 0.00 -1.00 -1.00 -1.00 ksoftirqd/1 1406823329 14 0.00 0.00 0.00 0.00 1 0.00 0.00 0 0 0.00 -1.00 -1.00 -1.00 migration/1 1406823329 18 0.00 0.01 0.00 0.01 2 0.00 0.00 0 0 0.00 -1.00 -1.00 -1.00 ksoftirqd/2