proctime

   proctime

  사용법


	proctime -V
	proctime -p plist [-f][-d][-0][-1] [interval [count]]
	proctime -p pid -l [-f][-d][-0][-1] [interval [count]]
	proctime -R -p plist [-0][-f]
	proctime -R -p pid -l [-0][-L lwplist] [-f]

	Options are as follows:

	-?           print this help
	-0           insert DATE.TIME info at the first column
	-1           set both interval and count to 1
	-d           print detail time for CPU usage in microsecond
	-f           print command name only insted of argument list
	-l           print CPU usage per LWP
	-L lwplist   print information of the LWPs in the lwplist
	-p plist     process list(separated by comma) to monitor
	-R           display accumulated data since process started
	-V           show version
	interval     interval time(second); def: 5
	count        times to get the info
  설명

proctime 명령어는 지정한 시간 간격(디폴트 5초) 동안에 -p 옵션에서 지정한 프로세스에 대하여 CPU를 사용한 시간 및 sleep 시간에 대한 자세한 정보를 보여준다.

# proctime -p 6674
  PID USERNAME NLWP S D-WCPU% D-CPU%  SCALL   CS SIG  ELAPSED  USR  SYS  TRP  FLT  LCK  LAT  STP  SLP COMMAND
 6674     root   15 S   0.00%  0.00%      0    0   0 43d86289  0.0  0.0  0.0  0.0 53.3  0.0  0.0 46.7 /usr/sbin/syslogd

USR, SYS, TRP, FLT, LCK, LAT, STP, SLP에서 표시되는 값은 각 요소에 소요된 시간에 대한 비률을 나타낸다.
USR, SYS, TRP, FLT는 CPU를 사용한 비률이고, LCK, LAT, STP, SLP를 CPU를 사용하지않은 비율이다. 각 필드에 대한 설명은 아래 부분에서 설명한다.

-l 옵션을 지정하면 프로세스에 있는 각각의 LWP 정보를 보여준다. (출력되는 데이타는 LWPID 숫자의 오름차순임)

# proctime -l -p 213
COMMAND: /usr/sbin/syslogd
  PID USERNAME LWPID NLWP S D-WCPU% D-CPU%  SCALL   CS SIG  ELAPSED  USR  SYS  TRP  FLT  LCK  LAT  STP  SLP SYSCALL-NAME
  213     root     1   17 S   0.00%  0.00%      0    0   0  0d21918  0.0  0.0  0.0  0.0  0.0  0.0  0.0  100 sigtimedwait
  213     root    12   17 S   0.00%  0.00%      0    0   0  0d21911  0.0  0.0  0.0  0.0  0.0  0.0  0.0  100 lwp_park
  213     root    13   17 S   0.00%  0.00%      0    0   0  0d21911  0.0  0.0  0.0  0.0  0.0  0.0  0.0  100 poll
  213     root    14   17 S   0.00%  0.00%      0    0   0  0d21911  0.0  0.0  0.0  0.0  0.0  0.0  0.0  100 door
  213     root    15   17 S   0.00%  0.00%      0    0   0  0d21910  0.0  0.0  0.0  0.0  0.0  0.0  0.0  100 lwp_park
  213     root    16   17 S   0.00%  0.00%      0    0   0  0d21910  0.0  0.0  0.0  0.0  0.0  0.0  0.0  100 poll
  213     root    17   17 S   0.00%  0.00%      0    0   0  0d21908  0.0  0.0  0.0  0.0  0.0  0.0  0.0  100 door
  213     root    18   17 S   0.00%  0.00%      0    0   0  0d12767  0.0  0.0  0.0  0.0  0.0  0.0  0.0  100 lwp_park
  213     root    19   17 S   0.00%  0.00%      0    0   0  0d12767  0.0  0.0  0.0  0.0  0.0  0.0  0.0  100 lwp_park
  213     root    20   17 S   0.00%  0.00%      0    0   0  0d12767  0.0  0.0  0.0  0.0  0.0  0.0  0.0  100 lwp_park
  213     root    21   17 S   0.00%  0.00%      0    0   0  0d12767  0.0  0.0  0.0  0.0  0.0  0.0  0.0  100 lwp_park
  213     root    22   17 S   0.00%  0.00%      0    0   0  0d12767  0.0  0.0  0.0  0.0  0.0  0.0  0.0  100 lwp_park
  213     root    23   17 S   0.00%  0.00%      0    0   0  0d12767  0.0  0.0  0.0  0.0  0.0  0.0  0.0  100 lwp_park
  213     root    24   17 S   0.00%  0.00%      0    0   0  0d12767  0.0  0.0  0.0  0.0  0.0  0.0  0.0  100 lwp_park
  213     root    25   17 S   0.00%  0.00%      0    0   0  0d12767  0.0  0.0  0.0  0.0  0.0  0.0  0.0  100 lwp_park
  213     root    26   17 S   0.00%  0.00%      0    0   0  0d12767  0.0  0.0  0.0  0.0  0.0  0.0  0.0  100 lwp_park
  213     root    27   17 S   0.00%  0.00%      0    0   0  0d12767  0.0  0.0  0.0  0.0  0.0  0.0  0.0  100 lwp_park

-d 옵션을 지정하면 CPU 사용 비률 및 sleep 비률이 아닌 micro-second 단위의 시간을 보여준다.

# proctime -d -p 6674
  PID USERNAME NLWP S D-WCPU% D-CPU%  SCALL   CS SIG  ELAPSED      USER       SYS      TRAP     FAULT      LOCK   LATENCY      STOP     SLEEP COMMAND
  213     root   17 S   0.00%  0.00%      0    0   0  0d22354  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000 85.000000 /usr/sbin/syslogd

다음은 2개의 프로세스에 대하여 2초 간격으로 3번 데이타를 수집하는 예제이다.

# proctime -p 808,1734 -f 2 3
  PID USERNAME NLWP S D-WCPU% D-CPU%  SCALL   CS SIG  ELAPSED  USR  SYS  TRP  FLT  LCK  LAT  STP  SLP CMD
  808     root   21 S  16.46%  8.23%   5119 1118   0  62d9829  0.5  0.2  0.0  0.0 88.0  0.1  0.0 11.0 cvm
 1734    guest   16 S   0.06%  0.03%    122   51   0  62d9194  0.0  0.0  0.0  0.0 75.0  0.0  0.0 25.0 java

  PID USERNAME NLWP S D-WCPU% D-CPU%  SCALL   CS SIG  ELAPSED  USR  SYS  TRP  FLT  LCK  LAT  STP  SLP CMD
  808     root   21 S  16.17%  8.08%   3920  850   0  62d9831  0.5  0.3  0.0  0.0 88.4  0.1  0.0 10.7 cvm
 1734    guest   16 S   0.06%  0.03%    120   49   0  62d9196  0.0  0.0  0.0  0.0 75.0  0.0  0.0 25.0 java

  PID USERNAME NLWP S D-WCPU% D-CPU%  SCALL   CS SIG  ELAPSED  USR  SYS  TRP  FLT  LCK  LAT  STP  SLP CMD
  808     root   21 S  10.77%  5.39%   3394  731   0  62d9833  0.4  0.2  0.0  0.0 88.9  0.1  0.0 10.6 cvm
 1734    guest   16 S   0.06%  0.03%    131   53   0  62d9198  0.0  0.0  0.0  0.0 75.0  0.0  0.0 25.0 java

-l 옵션을 지정할 경우에 -p 옵션에 하나의 프로세스만 지정할 수 있다.

다음은 proctime 명령어의 헤더 정보이다.

필드설명
PID프로세스 ID
USERNAME사용자명
LWPID프로세스에 있는 LWP(light-weight process: 쓰레드) ID
NLWP프로세스에 있는 LWP(light-weight process: 쓰레드)의 개수
S프로세스의 상태(state)를 표시한다.
S    Sleeping process
O    process On processor
R    Runnable process
Z    Zombie state
T    process stopped ether by a job control signal or because of being Traced.
D-CPU%
D-WCPU%
D-CPU%는 지정된 시간 간격 동안에 사용된 CPU 사용량의 백분률
D-WCPU%(weighted CPU%) = D-CPU% * processor 개수
SCALL지정한 시간 가격동안에 시스템 콜을 호출한 횟수 (초당값이 아님.)
CS지정한 시간 가격동안에 context switching 횟수 (초당값이 아님.)
SIG지정한 시간 가격동안에 signal을 받은 횟수 (초당값이 아님.)
ELAPSEDLWP가 시작한 후에 경과된 시간(second)
형식: day d second
1d12419:   1일 12419초가 경과함
USRUSER 모드에서 사용한 CPU 사용률 (-d 옵션 사용시 소요된 시간 표시)
SYSSYSTEM 모드에서 사용한 CPU 사용률 (-d 옵션 사용시 소요된 시간 표시)
TRPTRAP 모드에서 사용한 CPU 사용률 (-d 옵션 사용시 소요된 시간 표시)
FLT(text, data, kernel) page fault 처리에 사용한 CPU 사용률 (-d 옵션 사용시 소요된 시간 표시)
LCKuser lock wait sleep 비률 (-d 옵션 사용시 소요된 시간 표시)
LATwait-cpu (latency) sleep 비률 (-d 옵션 사용시 소요된 시간 표시)
STPstopped sleep 비률 (-d 옵션 사용시 소요된 시간 표시)
SLP그외 sleep 비률
CMDLINE명령어 및 인수
CMD명령어 패스의 마지막 파일명
예를 들어 명령어가 /usr/openwin/bin/htt -nosm 경우에 htt을 나타낸다. /usr/openwin/bin/htt -nosm ---> htt 이 컬럼은 -f 옵션을 사용할 경우에 출력된다.
SYSCALL-NAME -l 옵션을 사용하면, 쓰레드 별로 정보를 보여준다. 이 때 스레드가 수행하고 있는 시스템 콜명을 표시한다.

다음은 proctime 명령어의 옵션이다.

옵션설명
-0 -0 옵션을 지정하면, 첫컬럼에 날짜와 시간 정보를 출력하게 한다.
-1 -1 옵션은 interval과 count를 1로 지정한다. 다음의 두개의 명령어는 같은 의미이다.
	# proctime -1
	# proctime 1 1
즉, 1초 시간 간격으로 1회 데이타를 출력한다.
-d -d 옵션을 지정하면, 프로세스의 시간정보를 micro-second 단위로 보여준다.
-l -l 옵션을 지정하면, 프로세스에 있는 개별 LWP 별로 데이타를 보여준다.
-l 옵션을 사용할 경우에 -p 옵션에 하나의 프로세스만 지정할 수 있다.
-L lwpid -L 옵션에 쓰레드 ID를 지정하면, 지정한 쓰레드 정보만 보여준다.
-L 옵션은 -l 옵션과 함께 사용된다.
-p plist -p plist 데이타를 수집할 프로세스 ID를 지정한다.
여러 개의 프로세스를 지정하려면 콤마로 분리하여 지정할 수 있다.
-l 옵션을 사용할 경우에는 -p 옵션에 하나의 프로세스만 지정할 수 있다.
-R -R 옵션을 지정하면 프로세스가 지금까지 누적 시간은 nano-second 단위로 표시한다.

# proctime -R 14359
  PID USERNAME NLWP S        SCALL         CS    SIG  ELAPSED             USER              SYS          TRAP    
         FAULT                LOCK         LATENCY            STOP               SLEEP COMMAND
14359    guest    1 S        21223       4337     13  13d1218      0.050974252      0.187492469   0.000621154 
   0.000000000         0.000000000     0.256963024     0.000012422   1124483.142170856 ksh

-V -V 옵션을 지정하면, 명령어의 버전 정보를 보여준다.
[interval [count]] interval의 시간 간격으로 count 횟수 만큼 반복하여 프로세스 정보를 수집한다. count를 지정하지 않으면, 지정한 시간 간격으로 무한히 반복한다. 둘다 지정하지 않으면 5초 단위로 한번만 프로세스 정보를 수집한다.