検索
連載

【 pidstat 】コマンド――プロセスのリソース使用量を表示するLinux基本コマンドTips(129)

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、プロセスごとのCPUの使用率やI/Oデバイスの使用状況を表示する「pidstat」コマンドです。

Share
Tweet
LINE
Hatena
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介してきます。今回は、プロセスごとCPUの使用率やI/Oデバイスの使用状況を表示する「pidstat」コマンドです。

pidstatコマンドとは?

 「pidstat」はプロセスごとのCPUの使用率やI/Oデバイスの使用状況を表示するコマンドです。

 pidstatはmpstatコマンド(第127回)やiostatコマンド(第128回)と同じsysstatパッケージに収録されています。いずれも、主に/var/log/sysstatを参照するコマンド群です。

 sysstatパッケージがインストールされていない場合、「sudo yum install sysstat」あるいは「sudo apt-get install sysstat」などでインストールできます ※。

※sysstatパッケージをインストールする前にパッケージの内容を確認するコマンドもある。「apt-cache -f search sysstat」と実行する。




pidstatコマンドの書式

pidstat [オプション] [更新の間隔 [回数]]

※[ ]は省略可能な引数を示しています





pidstatの主なオプション

短いオプション 意味
-C コマンド名 指定したコマンド名のプロセスだけを表示する。正規表現が使用可能
-d I/Oの統計情報を表示する(カーネル2.6.20以降)
-h 複数の内容を指定した場合も、全ての項目を1行で出力する(他のプログラムで処理しやすくするためのオプションで、時刻の表示もUNIX時刻になる)
-I SMP(対称型マルチプロセッシング)環境において、CPUの使用率をプロセッサ数で割った値を表示する
-l コマンド名を引数付きで表示する
-p プロセスID 表示するプロセスIDを指定する。「-p 1,2,3」のように「,」区切りで複数指定可能。「-p SELF」でpidstat自身を表示、「-p ALL」で全てのプロセスを表示
-r ページフォールトとメモリの使用率を表示する
-s スタック使用量を表示する
-t マルチスレッドで動いているプロセスをまとめて表示。項目としてTGID(スレッドグループID)とTID(スレッドID)も同時に出力する
-T 指定 表示対象を「TASK」(選択したプロセス)、「CHILD」(指定したプロセスの子プロセス)、「ALL」(両方)から選択
-u CPU使用率を表示する(デフォルト)
-w コンテキストスイッチの発生率を表示する(カーネル2.6.23以降)

「-u」オプション指定時の表示項目(デフォルト指定)

項目名 内容
UID ユーザーID
PID プロセスID
%usr アプリケーション(ユーザーレベル)によるCPU使用率
%system カーネル(システムレベル)によるCPU使用率
%guest 仮想マシンによるCPU使用率
%CPU プロセスが使用しているトータルのCPU使用率
CPU プロセスを実行しているCPUの番号(「-I」が指定されている場合はCPUの数で割った値を表示する)
Command コマンド名

「-r」オプション指定時の表示項目

項目名 内容
UID ユーザーID
PID プロセスID
minflt/s 1秒ごとのマイナーフォールト数 ※※
majflt/s 1秒ごとのメジャーフォールト数
VSZ 仮想メモリサイズ(KB単位)
RSS 物理メモリサイズ(スワップされていないメモリのサイズ、KB単位)
%MEM 使用メモリの割合
Command コマンド名

※※ディスクからメモリページを読み出す必要がないページフォールト。メジャーフォールトでは、読み出す必要がある。


「-s」オプション指定時の表示項目

項目名 内容
UID ユーザーID
PID プロセスID
StkSize 予約済みだが使用されていないスタックの量
StkRef 参照されているスタックの量
Command コマンド名

「-d」オプション指定時の表示項目

項目名 内容
UID ユーザーID
PID プロセスID
kB_rd/s 1秒当たりの読み出し量(KB単位)
kB_wr/s 1秒当たりの書き込み量(KB単位)
kB_ccwr/s キャンセルされた1秒当たりの書き込み量(KB単位)
iodelay (バージョン10.2.1以降で表示)
Command コマンド名

「-w」オプション指定時の表示項目

項目名 内容
UID ユーザーID
PID プロセスID
cswch/s 1秒当たりの自発的なコンテキストスイッチの回数 ※※※
nvcswch/s 1秒当たりの強制的なコンテキストスイッチの回数
Command コマンド名

※※※自発的なコンテキストスイッチは、必要なリソースが利用できないため、タスクがブロックされた際に発生する。強制的なコンテキストスイッチは、タイムスライス中にタスクが実行された後、割り当てられたCPUの使用権を手放した際に起こる。




プロセスごとにCPU使用率を表示する

 「pidstat」で、現在動作しているプロセスそれぞれのCPU使用率を表示します(画面1)。「pidstat -p プロセスID」 ※※※※、あるいは「pidstat -C コマンド名」で表示対象のプロセスを選択できます。

※※※※筆者の環境(CentOS)に収録されているpidstat 10.1.5(パッケージ:sysstat 10.1.5)では、「-p」オプションを指定した際に、コマンド実行例にあるようなプロセスIDとSELFの指定が効かず、情報を表示しなかった。「-t」オプション指定時や、繰り返し表示する際には問題がない。なお、Ubuntu収録のpidstat 10.2.0以降ではいずれも問題なく表示する。


コマンド実行例

pidstat画面1

(各プロセスのCPU使用率を表示)

pidstat -p 1,2,3

(プロセスIDが1と2と3のプロセスを表示)

pidstat -C bash画面1

(コマンド名がbashのプロセスを表示)


画面1
画面1 pidstatの出力例(上)とコマンド名がbashのプロセスの表示結果(下)


プロセスごとにI/Oデバイスの使用状況を表示する

 「-d」オプションを指定すると、プロセスごとのI/Oデバイスの使用状況を表示します(画面2)。

コマンド実行例

pidstat -d画面2


画面2
画面2 コマンド名がbashのプロセスについてI/Oデバイスの使用状況を表示したところ

 CPU使用率とI/Oデバイスの使用状況の両方を表示したい場合は、「-u」と「-d」を同時に指定します(画面3)。ただし、表示結果がプロセスごとにはまとまっていません。プロセスごとに1行にまとめたい場合は、「-h」も同時に使います。

 「-h」は他のプログラムで処理しやすいように用意されているオプションです。UNIX時間(1970年1月1日00:00:00からの経過秒数)を使って、時刻を表示します。

コマンド実行例

pidstat -u -d画面3

pidstat -u -d -h


画面3
画面3 コマンド名がbashのプロセスについてCPU使用率とI/Oデバイスの使用状況を同時に表示したところ プロセスごとにまとめて表示するため、画面下の実行例では「-h」を指定している


統計情報を一定間隔で更新する

 「pidstat 秒数」または「pidstat 秒数 回数」のように更新の間隔を指定すると、アクティブなプロセスの統計情報を指定分だけ表示します。回数を指定しなかった場合は[CTRL]+[C]で終了します。

 指定回数後、または[CTRL]+[C]で終了した場合は、最後に平均値(Average)を出力します。

コマンド実行例

pidstat 1画面4

(1秒ごとに表示、[CTRL]+[C]で終了)

pidstat 1 5

(1秒ごとに5回表示)


 繰り返しの間隔を指定した場合、「-C」オプションによる指定が効かないため、画面4では「-p」オプションで表示するプロセスIDを指定しています。

画面4
画面4 1秒ごとにpidstatを実行したところ


筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801NからのDOSユーザー。PC-486DX時代にDOS版UNIX-like toolsを経てLinuxへ。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る