ps コマンドの使用法
ps コマンドは、システム上で実行中のプログラムと、プログラムで使用しているリソースの識別のための柔軟なツールです。 システム上のプロセスに関する統計と状況情報 (プロセス ID、スレッド ID、入出力アクティビティー、CPU、メモリー使用率など) が表示されます。
このセクションでは、CPU に関係のあるオプションと出力フィールドについてのみ説明します。
可能な ps 出力欄は 3 つあり、それぞれ異なる方式で CPU 使用量を報告します。
- 列
- 値:
- C
- そのプロセスで一番最近使用された CPU 時間 (クロックの目盛り単位)。
- 時刻
- プロセスが始動以来使用した合計 CPU 時間 (分と秒単位)。
- CPU (%CPU)
- プロセスが始動以来使用した合計 CPU 時間を、 プロセス始動以来の経過時間で割った値。 この時間はプログラムの CPU 依存度を測る尺度です。
CPU 集中
# ps -ef | egrep -v "STIME|$LOGNAME" | sort +3 -r | head -n 15 UID PID PPID C STIME TTY TIME CMD
mary 45742 54702 120 15:19:05 pts/29 0:02 ./looper
root 52122 1 11 15:32:33 pts/31 58:39 xhogger
root 4250 1 3 15:32:33 pts/31 26:03 xmconsole allcon
root 38812 4250 1 15:32:34 pts/31 8:58 xmconstats 0 3 30
root 27036 6864 1 15:18:35 - 0:00 rlogind
root 47418 25926 0 17:04:26 - 0:00 coelogin <d29dbms:0>
bick 37652 43538 0 16:58:40 pts/4 0:00 /bin/ksh
bick 43538 1 0 16:58:38 - 0:07 aixterm
luc 60062 27036 0 15:18:35 pts/18 0:00 -ksh列 (C) 最近使用された CPU を示します。 ループするプログラムのプロセスは、リストの先頭に来ます。 このCスケジューラーが 120 でカウントを停止するため、値によってループ・プロセスの CPU 使用量を最小化できます。 マルチスレッド・プロセスの場合、このフィールドはそのプロセス内のすべてのスレッドについてリストされた CP の和を示します。
ps -lmo THREAD -p 8060956
USER PID PPID TID ST CP PRI SC WCHAN F TT BND COMMAND
root 8060956 6815882 - A 720 120 0 - 200001 pts/0 - ./a.out
- - - 8716483 R 120 120 0 - 400000 - - -
- - - 17105017 R 120 120 0 - 400000 - - -
- - - 24182849 R 120 120 0 - 400000 - - -
- - - 24510589 R 120 120 0 - 400000 - - -
- - - 30277829 R 120 120 0 - 400000 - - -
- - - 35913767 R 120 120 0 - 400000 - - -「CP」欄の値 720 は、この値の下にリストされた個別スレッドの和、すなわち (5 * 120) + (120) です。CPU 時間比率
ps コマンドは、定期的に実行され、CPU 時間を以下の下に表示します。TIMEの下での実時間に対する CPU 時間の比率を示します。%CPU列。 使用率が最高のプロセスを探してください。 au オプションと v オプションは、ユーザー・プロセスに関して類似した情報を表示します。 aux オプションと vg オプションは、 ユーザー・プロセスとシステム・プロセスの両方を表示します。
# ps au
USER PID %CPU %MEM SZ RSS TTY STAT STIME TIME COMMAND
root 19048 24.6 0.0 28 44 pts/1 A 13:53:00 2:16 /tmp/cpubound
root 19388 0.0 0.0 372 460 pts/1 A Feb 20 0:02 -ksh
root 15348 0.0 0.0 372 460 pts/4 A Feb 20 0:01 -ksh
root 20418 0.0 0.0 368 452 pts/3 A Feb 20 0:01 -ksh
root 16178 0.0 0.0 292 364 0 A Feb 19 0:00 /usr/sbin/getty
root 16780 0.0 0.0 364 392 pts/2 A Feb 19 0:00 -ksh
root 18516 0.0 0.0 360 412 pts/0 A Feb 20 0:00 -ksh
root 15746 0.0 0.0 212 268 pts/1 A 13:55:18 0:00 ps au(process CPU time / process duration) * 100次のような 2 つのプロセスを想像してください。最初のプロセスは始動して 5 秒間実行しますが、終了しません。その後に 2 番目のプロセスが始動して 5 秒間実行しますが、終了しません。 ps コマンドで 50 パーセントが表示されるようになります。%CPU最初のプロセスの場合 (経過時間が 10 秒の場合は 5 秒の CPU)、2 番目のプロセスの場合は 100% (経過時間が 5 秒の場合は 5 秒の CPU)。
SMP の場合、この値はシステム上で使用可能な CPU の数で割ります。 前の例を振り返ると、以下の理由があります。%CPUこの例は 4-way プロセッサー・システムで実行されるため、 cpubound プロセスの値が 25 を超えることはありません。 cpubound プロセスは、1 つのプロセッサーの 100% を使用しますが、%CPU値は、使用可能な CPU の数で除算されます。
THREAD オプション
# ps -mo THREAD
USER PID PPID TID ST CP PRI SC WCHAN F TT BND COMMAND
root 20918 20660 - A 0 60 1 - 240001 pts/1 - -ksh
- - - 20005 S 0 60 1 - 400 - - -このTID列にはスレッド ID が表示されます。BND列には、プロセッサーにバインドされているプロセスとスレッドが表示されます。
通常、以下の名前のプロセスが表示されます。kproc(オペレーティング・システム・バージョン 4 の 516 の PID) は CPU 時間を使用しています。 タイム・スライス中に実行できるスレッドがない場合、スケジューラーがそのタイム・スライスの CPU 時間をこのカーネル・プロセス (kproc) に割り当てます。これはアイドル または待ち kproc と呼ばれています。 SMP システムでは、プロセッサーごとにアイドルの kproc が 1 つずつあります。