psparse

   psparse

  사용법


	psparse -V
	psparse [-c|-m|-h|-r|-s|-e|-l|-T|-C] [{-t n | -a}] [-E|-f] [-0][-k][-Z] [-R range] file
	psparse {-c|-m|-h|-r|-s|-e|-l|-T|-C} filter_options [{-t n | -a}] [-E|-f] [-0][-k][-Z] [-R range] file
	psparse -1 [-+] [-E|-f] [-0][-k][-Z] [-R range] [filter_options] file
	psparse -2 [-+] [-E|-f] [-0][-k][-Z] [-R range] [filter_options] file
	psparse -3 [-E|-f] [-0][-k][-Z] [-R range] [filter_options] file
	psparse -A {SIZE | RSS | HP+STK | NLWP | CPU} [-Z] [-R range][-t n][-k] [filter_options] file
	psparse -A D-CPU [-q] [-Z] [-R range][-t n][-k] [filter_options] file
	psparse -A {D-SIZE | D-RSS | D-HP+STK} [-Z][-t n][-k] [-R range] [-Y memsize] [filter_options] file
	psparse -A D-ALL-TIME [-t n] [-R range] [filter_options] file
	psparse -A {D-ALL-SIZE | D-ALL-RSS | D-ALL-HP+STK} [-Z] [-t n][-k] [-R range][-Y memsize] [filter_options] file
	psparse -A {PROC-NPROC | PROC-NLWP | PROC-HP+STK | PROC-CPU | PROC-SUM-CPU} [-t n][-k] [-R range] [filter_options] file
	psparse -A {USER-NPROC | USER-NLWP | USER-HP+STK | USER-CPU | USER-SUM-CPU} [-t n][-k] [-R range] [filter_options] file
	psparse -A COMMAND [-k] [-R range] [filter_options] file
	psparse -A USER [-k] [-R range] [filter_options] file
	psparse -A ZONE [-k] [-R range] [filter_options] file
	psparse -D [-q] [{-t n | -a}] [-0][-Z] [-R range] file
	psparse -D -G cmd_names [-q] [-v] [-L] [-0] [-R range] file
	psparse -D -G cmd_names -o selfield [-q] [-v] [-L] [-0] [-R range] file
	psparse -D -g strings [-q] [-v] [-L] [-0] [-R range] file
	psparse -D -g strings -o selfield [-q] [-v] [-L] [-0] [-R range] file
	psparse -D -H [-q] [-R range] file
	psparse -D -p pids [-q] [-v] [-L] [-0][-Z] [-R range] file
	psparse -D -p pids -o selfield [-q] [-v] [-L] [-0][-Z] [-R range] file
	psparse -F [-h] file
	psparse -g [!]strings [-E|-f] [-0][-k][-Z] [-R range] [filter_options] file
	psparse -G [!]cmd_names [-E|-f] [-0][-k][-Z] [-R range] [filter_options] file
	psparse -H [-k] [-R range] file
	psparse -H [-Z -o selfield] [-k] [-R range] [filter_options] file
	psparse -I file
	psparse -O -R range [-z zone] file
	psparse -O -z zone file
	psparse -O -R time1,time2,... [-z zone] file
	psparse -M condition[,condition,...][-E|-f][-k][-Z] [-R range] [filter_options] file
	psparse -p pids [-E|-f] [-L] [-0][-k][-Z] [-R range][-a | -N nth] [filter_options] file
	psparse -p pids -o selfield [-E|-f] [-L] [-0][-k][-Z] [-R range][-a | -N nth] [filter_options] file
	psparse -p pids -m [-L] [-0][-k][-Z] [-R range][-a | -N nth] [filter_options] file
	psparse -p pids -m -o selfield [-L] [-0][-k][-Z] [-R range][-a | -N nth] [filter_options] file
	psparse -P pid [-E|-f] [-0][-k][-Z] [-R range][-a | -N nth] [filter_options] file
	psparse -u [!]username [-E|-f] [-0][-k][-Z] [-R range] [filter_options] file
	psparse -z [!]zone [-E|-f] [-0][-k] [-R range] [filter_options] file
	psparse -S [-c|-h|-n|-e|-l|-T|-C] [{-t n | -a}] [-L][-0][-k] [-R range] [filter_options] file
	psparse -S -N names [-L][-0][-k] [-R range] [filter_options] file
	psparse -S -N names -o selfield [-L][-0][-k] [-R range] [filter_options] file
	psparse -S -g strings [-L][-0][-k] [-R range] [filter_options] file
	psparse -S -g strings -o selfield [-L][-0][-k] [-R range] [filter_options] file
	psparse -S -Z [-c|-h|-n|-e|-l|-T|-C] [{-t n | -a}] [-L][-0][-k] [-R range] [filter_options] file
	psparse -S -Z -N names [-L][-0][-k] [-R range] [filter_options] file
	psparse -S -Z -N names -o selfield [-L][-0][-k] [-R range] [filter_options] file
	psparse -U [-c|-h|-n|-e|-l|-T|-C] [{-t n | -a}] [-L][-0][-k] [-R range] [filter_options] [filter_options] file
	psparse -U -N names [-L][-0][-k] [-R range] [filter_options] [filter_options] file
	psparse -U -N names -o selfield [-L][-0][-k] [-R range] [filter_options] [filter_options] file
	psparse -W [-r|-s|-h] [-w] [{-t n | -a | -Y memsize }] [-0][-k][-Z] [-R range] [filter_options] file
	psparse -W -T [-w] [-R range] [filter_options] file
	psparse -X [-c | -E] [-R range] [-Z] file
	psparse -X -p pid [-c | -E] [-R range][-a] [-Z] file

	Options are as follows:

	-?               print this help
	-.               display ELAPSED time in 'hour.second' format
	-+               display the processes which captured twice and more
	-0               insert DATE.TIME info at the first column
	-1               display the processes which are not captured in next interval
	-2               display the processes which are captured newly
	-3               display the processes which are captured one time
	-A sortfield     search processes among all the data
	-a                 display all the processes
	-c                 sort by CPU%, default option
	-C                 sort by CHILDTIME
	-D                 delta of CPU time: [Refer to manual]
	-e                 sort by ELAPSED
	-E                 show CHILDTIME column
	-f                 short format
	-F                 extract header info and more
	-g [!]strings      grep string on CMDLINE; strings: string1[,string2,...]
	-G [!]cmd_names    match the last component of command pathname; cmd_names: cmd1[,cmd2,...]
	-h                 sort by HP+STK without -F option
	                   generate HTML page with -F option
	-H                 display only header information
	-I                 check interval in data file
	-k                 display SIZE, RSS and HP+STK in kilobyte
	-l                 sort by NLWP
	-L                 print dummy line for not found command or user
	-m                 sort by MEM%,(equal to RSS)
	-m                 print delta memory with -p option
	-M condition       print processes that meet the condition
	                   condition is: name=value
	                   name is: size,rss,hs,state,nlwp,wcpu,wcpu1,cpu,mem,time,childtime,elapsed
	                   example) psparse -M wcpu=90,hs=50
	-n                 sort by NPROC
	-N name(s)         specify process name or user name according to -S or -U option; names: name1[;name2;...]
	-N nth             show n'th PID of data for -p option (default: 1)
	-O                 extract range-specified data
	-o selfield        select one of output field
	                     for -D -G or -D -g option: NPROC,NLWP,MAX_SIZE,MAX_RSS,MAX_HS,HP+STK,D-WCPU,D-CPU,D-TIME,D-CHILD,DT-WCPU,DT-CPU,DC-WCPU,DC-CPU
	                     for -D -p option: SIZE,RSS,HP+STK,NLWP,D-WCPU,D-CPU,D-TIME,D-CHILD,DT-WCPU,DT-CPU,DC-WCPU,DC-CPU
	                     for -p option: PID,SIZE,RSS,HP+STK,NLWP,WCPU,CPU,TIME,CHILDTIME,D-TIME,D-CHILD
	                     for -m -p option: PID,SIZE,RSS,HP+STK,NLWP,D-MEM,D-SIZE,D-RSS,D-HP+STK
	                     for -S option: NPROC,NLWP,WCPU,CPU,HP+STK,MAX_SIZE,MAX_RSS,MAX_HS,TIME,CHILDTIME
	                     for -H -Z option: NPROC,NLWP,WCPU,CPU,HP+STK,MAX_SIZE,MAX_RSS,MAX_HS,ZOMB,RUN
	-p pid             find process whose process ID is pid
	-P pid             find processes whose parent process ID is pid
	-q                 do not calculate child process's time
	-r                 sort by RSS
	-R range           specify range of input data: n, HH:MM:SS-HH:MM:SS, mmdd.HH:MM:SS-mmdd.HH:MM:SS, HH:MM:SS-n, mmdd.HH:MM:SS-n
	-R time1,time2,...   specify input data time: HH:MM:SS,HH:MM:SS,... or mmdd.HH:MM:SS,mmdd.HH:MM:SS,... with -O option
	-s                 sort by SIZE
	-S                 summarize by the same processes
	-t n               the number of processes to show(max 2000 for -A option, otherwise no max)
	-T                 sort by TIME
	-T                 total memory trace for -W option
	-u [!]usernames    filter by username; usernames: username1[,username2,...]
	-U                 summarize by the same users
	-X                 show process tree
	-V                 show version
	-v                 verbose mode
	-W                 trace memory size. Default sort order option is -r option(RSS)
	-w                 include starting/ending processes for -W option
	-Y memsize         specify minimum memsize(KB) for -W option and -A D-SIZE, -A D-RSS, -A D-HP+STK
	-z zones           filter by zone; zones: [!]zone1[,zone2,...]
	filter_options     [-g [!]strings | -G [!]cmd_names] [-u [!]users] [-z [!]zones]

	file               if a file operand is -, the standard input will be used
  설명

psparse 명령어는 psinfo -A 의 출력을 입력으로 받아서 처리한다. 즉, psinfo -A 명령어로 프로세스 정보를 파일에 저장해 두고, 나중에 시간 별로 원하는 정렬 순서로 가공할 수 있다.
psinfo 명령어에 -A 옵션을 사용하면, SIZE, RSS, HP+STK를 KB(Kilo Byte) 단위로 나타내고 CHILDTIME도 보여주며, TIME과 CHILDTIME에는 항상 1/10000 초까지 시간을 보여준다. 그리고 수집되는 데이타 양을 줄이기 위하여 필드 간의 공백을 최소화 한다.

다음과 같이 psinfo 명령어로 1 분 간격으로 60번, 한 시간의 데이타를 수집한 후 psparse 명령어로 각각의 시간대의 데이타에 대하여 여러 필드로 정렬하여 볼 수 있다.

# psinfo -A 60 60 > psinfo-A.log

  psparse [-c|-m|-h|-r|-s|-e|-l|-T|-C] [{-t n | -a}] [-E|-f] [-0][-k][-Z] [-R range] file
  psparse {-c|-m|-h|-r|-s|-e|-l|-T|-C} filter_options [{-t n | -a}] [-E|-f] [-0][-k][-Z] [-R range] file
psparse 명령어에 옵션을 지정하지 않으면, 디폴트로 CPU를 많이 사용하는 순서(-c 옵션을 지정한 것과 같음)로 정렬하여 상위 20개(-t 옵션을 사용하여 변경가능)의 프로세스 정보를 보여준다.

# psparse psinfo-A.log
Date.time 0609.04:36:07 proc 68 zomb 0 run 0 lwp 141 cpu 2.47% load1m 0.19 ptime 2801.2098 hp+stk 42.84M
  PID  PPID USERNAME   SIZE    RSS HP+STK S NLWP   WCPU%   CPU%  MEM%  ELAPSED          TIME CMDLINE
  288   283 guest    20.07M 17.63M 9.227M S    1   1.01%  1.01% 14.8%  0d23693    02:40.8812 datamon
 2150   449 guest    1.312M 1.109M 0.117M S    1   0.45%  0.45%  0.9%     0d34       00.2872 psinfo -H 2 1000
 2154   830 root     1.312M 1.109M 0.117M O    1   0.34%  0.34%  0.9%      0d0       00.0237 psinfo -A 5 20
  347   309 guest    21.28M 16.11M 9.438M S    8   0.26%  0.26% 13.6%  0d23670       36.7127 recv_data
  388   381 guest    9.414M 6.266M 1.625M S    8   0.21%  0.21%  5.3%  0d23661       24.9120 dtwm
  408   381 guest    17.53M 13.13M 9.766M S    1   0.13%  0.13% 11.1%  0d23647    01:05.1254 setd_data
    3     0 root     0.000M 0.000M 0.016M S    1   0.04%  0.04%  0.0%  0d23737       10.2340 fsflush
  287   268 root     2.289M 1.648M 0.148M S   12   0.01%  0.01%  1.4%  0d23695       05.7129 mibiisa -r -p 32792
   43     1 root     2.336M 0.641M 0.086M S    3   0.00%  0.00%  0.5%  0d23726       00.8300 /usr/lib/devfsadm/devfsadmd
  111     1 root     2.000M 1.172M 0.500M S    1   0.00%  0.00%  1.0%  0d23717       00.0833 /usr/sbin/rpcbind
   83     1 root     1.008M 0.625M 0.117M S    1   0.00%  0.00%  0.5%  0d23719       00.1122 /opt/JSparm/bin/mmon
  150     1 root     1.719M 0.867M 0.211M S    1   0.00%  0.00%  0.7%  0d23715       00.0683 /usr/lib/nfs/lockd
... skip ...

정렬하는 순서는 psinfo 명령어에서 사용하는 옵션과 같다.
(psparse 명령어의 대부분의 옵션은 psinfo 명령어와 같은 의미로 사용된다: psinfo 명령어를 참조)

[표 1]
컬럼 설명 옵션
SIZE 메모리가 큰 프로세스 순서 psparse -s
RSS 프로세스 메모리 중에 물리적 메모리에 많이 적재된 프로세스 순서 psparse -r
HP+STK Heap 과 Stack을 더한 크기가 큰 프로세스 순서 psparse -h
NLWP LWP(light-weight process)가 많은 프로세스 순서 psparse -l
WCPU%, CPU% CPU 사용률이 많은 프로세스 순서
WCPU% = CPU% * number of processors(CPU)
psparse [-c]
MEM% 메모리 사용률이 많은 프로세스 순서(RSS 순서와 같음) psparse -m
ELAPSED 최근에 실행된 프로세스 순서 psparse -e
TIME CPU의 누적 사용시간이 많은 프로세스 순서 psparse -T
CHILDTIME 자식 프로세스의 CPU의 누적 사용시간이 많은 프로세스 순서 psparse -C
NPROC 프로세스 개수가 많은 순서.( -S 또는 -U 옵션에서만 사용 가능) psparse -S -n
psparse -U -n

-a 옵션을 지정하면 지정된 정렬 순서(디폴트 CPU사용량)로 모든 프로세스 정보를 보여준다.

-E 옵션을 지정하면 자식 프로세스가 사용한 누적시간(CHILDTIME)도 보여준다.

-k 옵션을 지정하면 SIZE, RSS, HP+STK에 kilobyte 단위로 표시한다.

-f 옵션을 지정하면 다음과 같은 정보만 출력한다.

  PID USERNAME HP+STK S NLWP   WCPU%   CPU%  ELAPSED      TIME CMD

-0 옵션을 지정하면, 다음과 같이 출력되는 각 라인 앞에 날짜와 시간 정보를 추가한다.

# psparse -0 psinfo-A.log
Date.time 0609.04:36:07 proc 68 zomb 0 run 0 lwp 141 cpu 2.47% load1m 0.19 ptime 2801.2098 hp+stk 42.84M
    DATE.TIME   PID  PPID USERNAME   SIZE    RSS HP+STK S NLWP   WCPU%   CPU%  MEM%  ELAPSED          TIME CMDLINE
0609.04:36:07   288   283 guest    20.07M 17.63M 9.227M S    1   1.01%  1.01% 14.8%  0d23693    02:40.8812 datamon
0609.04:36:07  2150   449 guest    1.312M 1.109M 0.117M S    1   0.45%  0.45%  0.9%     0d34       00.2872 psinfo -H 2 1000
0609.04:36:07  2154   830 root     1.312M 1.109M 0.117M O    1   0.34%  0.34%  0.9%      0d0       00.0237 psinfo -A 5 20
... skip ...

-Z 옵션을 지정하면, zone 정보도 함께 보여준다. -Z 옵션은 zone 정보가 수집된 데이타에 한하여 지정할 수 있다. zone 정보가 수집되지 않은 데이타에 대하여 -Z 옵션을 지정하면, 다음과 같은 오류가 발생한다.

# psparse -Z psinfo-A.log
ERROR: data file has no zone info

zone 정보를 수집하려면, psinfo 명령어에 -Z 옵션을 지정하여야 한다.

# psinfo -A -Z > psinfo-AZ.log

getdata 명령어에서 zone 정보를 수집하려면, -Z 옵션을 지정하여야 한다. -Z 옵션을 지정하면, getdata 명령어가 psinfo 명령어를 실행할 때, -Z 옵션을 지정해 준다.

# getdata -A -Z -t 24 -i 60
Start to gather system info: interval 60 seconds, time: 24
Collecting data: vmstat mpstat iostat netinfo psinfo tsinfo
Data directory: ./data.20140819.005721.60

zone 정보를 가지고 있는 데이타에 대하여 psparse 명령어에 -Z 옵션을 지정하면, 다음과 같이 zone 정보를 보여준다.
# psparse -Z psinfo-A.log
Date.time 0609.04:36:07 proc 68 zomb 0 run 0 lwp 141 cpu 2.47% load1m 0.19 ptime 2801.2098 hp+stk 42.84M
        Zone   PID   PID  PPID USERNAME   SIZE    RSS HP+STK S NLWP   WCPU%   CPU%  MEM%  ELAPSED          TIME CMDLINE
      global   288   283 guest    20.07M 17.63M 9.227M S    1   1.01%  1.01% 14.8%  0d23693    02:40.8812 datamon
        web1  2150   449 guest    1.312M 1.109M 0.117M S    1   0.45%  0.45%  0.9%     0d34       00.2872 senddata -p 9999 -f data.dat
      global  2154   830 root     1.312M 1.109M 0.117M O    1   0.34%  0.34%  0.9%      0d0       00.0237 psinfo -A 5 20
... skip ...

filter_options 옵션에는 다음과 같다.

-g [!]strings | -G [!]cmd_names
-u [!]users
-z [!]zones

-g [!]strings | -G [!]cmd_names -g 또는 -G 옵션에 일치하는 문자열을 가지고 있는 프로세스 정보에 대해서만 처리한다.
여러 개를 지정할 때에는 콤마로 구분한다. string의 맨 첫글자에 ! 를 지정하면, 지정한 string과 일치하지 않은 프로세스 정보에 대해서만 처리한다.

	-G httpd,java
	-G !httpd,java
	-g ora_
	-g !ora
	-g "java -server"
-u [!]users -u 옵션에는 사용자 이름을 지정한다. 지정한 사용자 이름과 일치하는 프로세스 정보에 대해서만 처리한다.
여러 개를 지정할 때에는 콤마로 구분한다. user 이름의 맨 첫글자에 ! 를 지정하면, 지정한 user 이름과 일치하지 않은 프로세스 정보에 대해서만 처리한다.

	-u root
	-u guest1,guest2
	-u !root,nobody
-z [!]zones -z 옵션에는 zone(Solaris 10 container) 이름을 지정한다. 지정한 zone 이름과 일치하는 프로세스 정보에 대해서만 처리한다.
여러 개를 지정할 때에는 콤마로 구분한다. zone 이름의 맨 첫글자에 ! 를 지정하면, 지정한 zone 이름과 일치하지 않은 프로세스 정보에 대해서만 처리한다.

	-z db1
	-z global,web1,web2
	-z !global

filter_options을 지정할 때, 정렬옵션(-c, -m, -h, -r, -s, -e, -l, -T, -C)을 명시적으로 지정하여야 정렬 순서에 맞게 정렬하여 상위 20개의 프로세스 정보를 보여준다.
filter_options을 지정하고, 정렬옵션을 지정하지 않으면, 정렬 순서 없이 filter_options으로 걸러진 프로세스 정보를 모두 보여준다.

  -R Option:
-R range
-R time1,time2,...
-R 옵션이 지정되지 않으면, 모든 데이타에 대하여 처리한다. 그러나 -R 옵션에 시간 간격을 지정하면 수집한 데이타 중에서 지정한 시간에 범위에 들어온 데이타에 한하여 처리한다. 지정하는 range 시간 형식은 다음과 같다.

n
HH:MM:SS 
HH:MM:SS-HH:MM:SS
HH:MM:SS-n
-HH:MM:SS
HH:MM:SS-
mmdd.HH:MM:SS 
mmdd.HH:MM:SS-mmdd.SS-HH:MM:SS
mmdd.HH:MM:SS-n
-mmdd.HH:MM:SS
mmdd.HH:MM:SS-

예제)

# psparse -R 0609.09:00:00-0609.11:59:30 psinfo-A.log
# psparse -R 09:00:00-11:59:30 psinfo-A.log
# psparse -R 0609.09:00:00- psinfo-A.log0609.11:59:30 이후의 데이타에 대하여
# psparse -R -0609.11:59:30 psinfo-A.log0609.11:59:30 까지 데이타에 대하여
# psparse -R 0609.11:59:30 psinfo-A.log0609.11:59:30 데이타에 대하여
# psparse -R 09:00:00 psinfo-A.log09:00:00 부터 첫번째 대하여 (-R 09:00:00-1 과 같음)
# psparse -R 09:00:00-5 psinfo-A.log09:00:00 부터 5번 데이타에 대하여
# psparse -R 1 psinfo-A.log첫번째 데이타에 대하여
# psparse -R 3 psinfo-A.log처음부터 세번째 데이타까지에 대하여

09:00:00-11:59:30 라고 시간을 지정하면, 첫번째 데이타의 시간이 11:59:30 이후의 데이타는 더 이상 읽어 들이지 않는다.

-O 옵션을 사용할 때에는 다음과 같이 개별적인 시간을 지정할 수 있다.

-R time1,time2,...

지정하는 time 시간 형식은 다음과 같다.

HH:MM:SS 
mmdd.HH:MM:SS

예제)
# psparse -R 09:00:00,10:00:00,11:00:00,12:00:00 psinfo-A.log
# psparse -R 0810.22:00:00,0810.23:00:00,0811.01:00:00,0811.02:00:00, psinfo-A.log

시간은 순서에 맞게 지정하여야 한다.

  psparse -A {SIZE | RSS | HP+STK | NLWP | CPU} [-Z] [-R range][-t n][-k] [filter_options] file
  psparse -A D-CPU [-q] [-Z] [-R range][-t n][-k] [filter_options] file
  psparse -A {D-SIZE | D-RSS | D-HP+STK} [-Z][-t n][-k] [-R range] [-Y memsize] [filter_options] file
  psparse -A D-ALL-TIME [-t n] [-R range] [filter_options] file
  psparse -A {D-ALL-SIZE | D-ALL-RSS | D-ALL-HP+STK} [-Z] [-t n][-k] [-R range][-Y memsize] [filter_options] file
  psparse -A {PROC-NPROC | PROC-NLWP | PROC-HP+STK | PROC-CPU | PROC-SUM-CPU} [-t n][-k] [-R range] [filter_options] file
  psparse -A {USER-NPROC | USER-NLWP | USER-HP+STK | USER-CPU | USER-SUM-CPU} [-t n][-k] [-R range] [filter_options] file
  psparse -A COMMAND [-k] [-R range] [filter_options] file
  psparse -A USER [-k] [-R range] [filter_options] file
-A 옵션을 지정하면 수집한 전체 데이타에 대하여 가공하여 그 결과를 보여준다.
다른 옵션들은 구간 별로 가공한 결과가 나오지만, -A 옵션은 전체를 처리한 결과가 한번 나온다.
-A 옵션에는 인수로 다음과 같은 값이 지정될 수 있다.
	SIZE, RSS, HP+STK, NLWP, WCPU, CPU,
	D-SIZE, D-RSS, D-HP+STK, D-WCPU, D-CPU,
	D-ALL-SIZE, D-ALL-RSS, D-ALL-HP+STK, D-ALL-TIME,
	PROC-NPROC, PROC-NLWP, PROC-HP+STK, PROC-CPU, PROC-SUM-CPU,
	USER-NPROC, USER-NLWP, USER-HP+STK, USER-CPU, USER-SUM-CPU,
	COMMAND,
	USER,
	ZONE
콤마로 구분하여 여러개를 지정할 수 도 있고, "all" 이라는 키워드를 지정하여 모두를 지정하는 것과 같은 효과를 가질 수 도 있다.

다음은 두개의 명령어의 차이점의 설명한다.

# psparse -t 10 -s psinfo-A.log
# psparse -t 10 -A size psinfo-A.log

첫번째 "psparse -t 10 -s psinfo-A.log" 명령어를 실행하면, 구간 별로 프로세스의 메모리 크기가 큰 순서로 10개의 프로세스 정보를 보여준다. 데이타를 1 분 간격으로 100회 수집했다면, 1000개의 프로세스 정보가 화면에 출력된다.
반면에, 두번째 "psparse -t 10 -A size psinfo-A.log" 명령어를 실행하면, 전체 수집된 데이타를 모두 조사하여 프로세스의 메모리 크기가 큰 순서로 10개의 프로세스 정보를 보여준다.

# psparse -A size -t5 psinfo-A.log
===========================================================================================================
Sort SIZE: Date.time 0310.11:13:07 - 0310.19:13:07 : NCPU 12 Interval 30 Count 961
===========================================================================================================
    DATE.TIME   PID  PPID USERNAME   SIZE    RSS HP+STK S NLWP   WCPU%   CPU%  MEM%  ELAPSED          TIME CMDLINE
0310.19:12:37 18825     1 xxuser   1641.M 1123.M 185.3M O  213  30.69%  2.56%  9.5%  0d52365 05:06:39.4400 senddata -p 200
0310.19:10:37 21335     1 xxuser   1624.M 1106.M 168.0M S  213  29.66%  2.47%  9.4%  0d52002 05:02:56.1900 senddata -p 300
0310.18:01:37 21342     1 xxuser   1622.M 1107.M 165.6M O  213 358.92% 29.91%  9.4%  0d47862 13:01:10.1800 senddata -p 100
0310.18:04:07 21348     1 xxuser   1619.M 1083.M 163.1M S  213  38.67%  3.22%  9.2%  0d48012 04:27:32.2200 senddata -p 400
0310.17:01:07 21347     1 xxuser   479.3M 257.7M 58.23M S  136   0.11%  0.01%  2.2%  0d44232    07:14.8900 master-mon
0310.11:13:07  6947     1 xxuser   449.0M 302.9M 33.93M S   67  54.42%  4.53%  2.6% 18d31862 10-14:58:09.1500 recvdata

-A size 옵션을 지정하면, 프로세스 정보를 수집한 데이타 전체를 조사하여, SIZE가 큰 순서로 보여준다.
첫번째 컬럼에 있는 시간은 해당 프로세스의 메모리가 가장 컸던 시간이고, 그때의 프로세스 정보를 보여준다.
size 대신 rss, hp+stk, nlwp, cpu 지정하면, 각각 RSS, HP+STK, NLWP, CPU% 가 큰 시점의 데이타를 보여준다.

정렬순서 설명
SIZE 전체 구간 동안 프로세스 정보를 분석하여, 각 프로세스가 SIZE가 제일 컸던 때의 프로세스 정보를 수집하여 SIZE가 큰 순서로 보여준다.
RSS 전체 구간 동안 프로세스 정보를 분석하여,, 각 프로세스가 RSS가 제일 컸던 때의 프로세스 정보를 수집하여 RSS가 큰 순서로 보여준다.
HP+STK 전체 구간 동안 프로세스 정보를 분석하여, 각 프로세스가 HP+STK가 제일 컸던 때의 프로세스 정보를 수집하여 HP+STK가 큰 순서로 보여준다.
NLWP 전체 구간 동안 프로세스 정보를 분석하여, 각 프로세스가 NLWP가 제일 컸던 때의 프로세스 정보를 수집하여 NLWP가 큰 순서로 보여준다.
CPU 전체 구간 동안 프로세스 정보를 분석하여, 각 프로세스가 CPU%가 제일 컸던 때의 프로세스 정보를 수집하여 CPU%가 큰 순서로 보여준다.
D-SIZE 구간 별로 프로세스 정보를 분석하여, 각 프로세스 SIZE의 차이 값이 가장 컸을 때의 값은 D-SIZE에 표시하고, D-SIZE 값이 큰 순서로 보여준다.
D-RSS 구간 별로 프로세스 정보를 분석하여, 각 프로세스 RSS의 차이 값이 가장 컸을 때의 값은 D-RSS에 표시하고, D-RSS 값이 큰 순서로 보여준다.
D-HP+STK 구간 별로 프로세스 정보를 분석하여, 각 프로세스 HP+STK의 차이 값이 가장 컸을 때의 값은 D-HP+STK에 표시하고, D-HP+STK 값이 큰 순서로 보여준다.
D-CPU 구간 별로 프로세스 정보를 분석하여, 각 프로세스가 사용한 시간과 그 자식 프로세스가 사용한 시간을 합하여 경과된 시간으로 나누어 CPU 사용률을 D-CPU%에 표시하고, D-CPU%가 큰 순서로 보여준다.

-q 옵션을 지정하면 자식 프로세스가 사용한 시간은 계산하지 않는다.

D-ALL-SIZE 전체 구간 동안 프로세스 정보를 분석하여, 각 프로세스 SIZE의 차이 값이 가장 컸을 때의 값과 가장 작았을 때의 값의 차이 값을 D-ALL-SIZE 에 표시하고, D-ALL-SIZE 값이 큰 순서로 보여준다.
D-ALL-RSS 전체 구간 동안 프로세스 정보를 분석하여, 각 프로세스 RSS의 차이 값이 가장 컸을 때의 값과 가장 작았을 때의 값의 차이 값을 D-ALL-RSS 에 표시하고, D-ALL-RSS 값이 큰 순서로 보여준다.
D-ALL-HP+STK 전체 구간 동안 프로세스 정보를 분석하여, 각 프로세스 HP+STK의 차이 값이 가장 컸을 때의 값과 가장 작았을 때의 값의 차이 값을 D-ALL-HP+STK 에 표시하고, D-ALL-HP+STK 값이 큰 순서로 보여준다.
D-ALL-TIME 전체 구간 동안 프로세스 정보를 분석하여, 각 프로세스가 사용한 CPU 사용시간은 D-ALL-TIME 에 표시하고, D-ALL-TIME 값이 큰 순서로 보여준다.
PROC-NPROC 구간 별로 프로세스 정보를 분석하여, 같은 이름을 가진 프로세스를 합하여 프로세스 개수가 가장 컸을 때의 값을 NPROC 에 표시하고, NPROC 값이 큰 순서로 보여준다.
PROC-NLWP 구간 별로 프로세스 정보를 분석하여, 같은 이름을 가진 프로세스를 합하여 그 프로세스들이 가지고 있는 쓰레드의 개수가 가장 컸을 때의 값을 NLWP 에 표시하고, NLWP 값이 큰 순서로 보여준다.
PROC-HP+STK 구간 별로 프로세스 정보를 분석하여, 같은 이름을 가진 프로세스를 합하여 그 프로세스들이 HP+STK 이 가장 컸을 때의 값을 HP+STK 에 표시하고, HP+STK 값이 큰 순서로 보여준다.
PROC-CPU 구간 별로 프로세스 정보를 분석하여, 같은 이름을 가진 프로세스를 합하여 그 프로세스들의 CPU% 값이 가장 컸을 때의 값을 CPU% 에 표시하고, CPU% 값이 큰 순서로 보여준다.
PROC-SUM-CPU 전체 구간의 프로세스 정보를 분석하여, 같은 이름을 가진 프로세스의 CPU% 값을 모두 합하여 SUM-CPU%에 표시하고, SUM-CPU% 값이 큰 순서로 보여준다.
USER-NPROC 구간 별로 프로세스 정보를 분석하여, 사용자 이름이 같은 프로세스를 합하여 프로세스 개수가 가장 컸을 때의 값을 NPROC 에 표시하고, NPROC 값이 큰 순서로 보여준다.
USER-NLWP 구간 별로 프로세스 정보를 분석하여, 사용자 이름이 같은 프로세스를 합하여 그 프로세스들이 가지고 있는 쓰레드의 개수가 가장 컸을 때의 값을 NLWP 에 표시하고, NLWP 값이 큰 순서로 보여준다.
USER-HP+STK 구간 별로 프로세스 정보를 분석하여, 사용자 이름이 같은 프로세스를 합하여 그 프로세스들이 HP+STK 이 가장 컸을 때의 값을 HP+STK 에 표시하고, HP+STK 값이 큰 순서로 보여준다.
USER-CPU 구간 별로 프로세스 정보를 분석하여, 사용자 이름이 같은 프로세스를 합하여 그 프로세스들의 CPU% 값이 가장 컸을 때의 값을 CPU% 에 표시하고, CPU% 값이 큰 순서로 보여준다.
USER-SUM-CPU 전체 구간의 프로세스 정보를 분석하여, 사용자 이름이 같은 프로세스의 CPU% 값을 모두 합하여 SUM-CPU%에 표시하고, SUM-CPU% 값이 큰 순서로 보여준다.
COMMAND USER ZONE 전체 프로세스 정보를 분석하여, 프로세스 이름(-A COMMAND 지정시) 별로 구분하여, 모든 개별 프로세스에 대하여 다음의 컬럼 정보를 보여준다.

컬럼 설명
COMMAND
USER
ZONE
COMMAND: 프로세스 이름
USER: 사용자 이름
ZONE: zone 이름
MAX-WCPU% 최대 WCPU%
MAX-CPU% 최대 CPU%
MAX-NLWP 최대 NLWP
MIN-NLWP 최소 NLWP
DLT-NLWP Delta NLWP: 최대 NLWP - 최소 NLWP
MAX-SIZE 최대 SIZE
MIN-SIZE 최소 SIZE
DLT-SIZE Delta SIZE: 최대 SIZE - 최소 SIZE
MAX-RSS 최대 RSS
MIN-RSS 최소 RSS
DLT-RSS Delta RSS: 최대 RSS - 최소 RSS
MAX-HP+STK 최대 HP+STK
MIN-HP+STK 최소 HP+STK
DLT-HP+STK Delta HP+STK: 최대 HP+STK - 최소 HP+STK
COUNT 프로세스가 수집된 구간의 횟수
-A USER 옵션을 지정하면, 전체 프로세스 정보를 사용자 이름으로 분류하여, 그 사용자에 속해 있는 프로세스 정보의 최대값 최소값 정보를 위의 표와 같이 보여준다.

-A ZONE 옵션을 지정하면, 전체 프로세스 정보를 zone 이름으로 분류하여, 그 zone에 속해 있는 프로세스 정보의 최대값 최소값 정보를 위의 표와 같이 보여준다. 프로세스 이름(COMMAND 지정시) 별로 구분하여 사용자 이름(-A USER 지정시) 별로 정렬하여,

# psparse -A d-size -t5 psinfo-A.log
===========================================================================================================
Sort D-SIZE: Date.time 0310.11:13:07 - 0310.19:13:07 :  NCPU 12 Interval 30 Count 961 minimum_memsize=1024KB
===========================================================================================================
    DATE.TIME   PID  PPID USERNAME   ELAPSED   SIZE    RSS HP+STK  CNT CCNT   D-SIZE CMDLINE
0310.11:48:37 21335     1 xxuser     0d25482 1615.M 899.2M 168.0M  960  197   11.72M senddata -p 300
0310.12:35:37 21342     1 xxuser     0d28302 1614.M 919.6M 165.6M  960  172   11.63M senddata -p 100
0310.11:38:07 18825     1 xxuser     0d25095 1633.M 889.7M 185.3M  960  191   11.37M senddata -p 200
0310.14:16:07 21348     1 xxuser     0d34332 1619.M 1021.M 163.1M  960  172   11.31M senddata -p 400
0310.12:29:07  1010     1 root      18d40646 18.00M 4.125M 0.570M  960   18   11.06M atmagent
0310.16:31:07 26037 26033 xxuser     0d42043 197.7M 192.9M 182.8M  960  211   2.211M ns-httpd -d /home3/iws6000

-A d-size 옵션을 지정하면, 프로세스 정보를 수집한 파일을 구간 별로 조사하여, SIZE의 변화가 제일 큰 순서로 프로세스 정보를 보여준다.
SIZE의 변화의 크기는 D-SIZE에 표시된다.

CNT는 해당 프로세스가 수집된 구간의 횟수이고, CCNT는 메모리의 변화가 있었던 횟수이다.
DATE.TIME은 변화가 제일 컸던 때의 시간정보이다.

minimum_memsize=1024KB가 의미하는 것는 SIZE의 변화가 1024KB 이상인 프로세스 정보만 보여준다는 것을 의미한다.
이것은 -Y 옵션으로 변경할 수 있다. memsize 숫자 끝에 단위[k(Kilo), m(Mega), g(Giga)]를 지정할 수 있다(디폴트는 kilo이다).
d-size 대신 d-rss, d-hp+stk 지정하면, 각각 RSS, HP+STK의 변화가 제일 큰 순서로 프로세스 정보를 보여준다.

# psparse -A d-cpu -t5 psinfo-A.log
===========================================================================================================
Sort D-CPU: Date.time 0310.11:13:07 - 0310.19:13:07 :  NCPU 12 Interval 30 Count 961
===========================================================================================================
    DATE.TIME   PID  PPID     USER HP+STK D-WCPU% D-CPU%  ELAPSED    D-TIME   D-CHILD CMDLINE
0310.16:31:37 21342     1   xxuser 165.6M 903.97% 75.33%  0d42462  271.1900    0.0000 senddata -p 100
0310.15:49:37 21348     1   xxuser 163.1M 185.23% 15.44%  0d39942   55.5700    0.0000 senddata -p 400
0310.15:49:37 18825     1   xxuser 185.3M 185.17% 15.43%  0d40185   55.5500    0.0000 senddata -p 200
0310.11:44:07 21335     1   xxuser 168.0M 182.33% 15.19%  0d25212   54.7000    0.0000 senddata -p 300
0310.15:01:37   618   612     root 22.14M  99.13%  8.26%     0d97   29.7400    0.0000 lsof -P

-A d-cpu을 지정하면, 프로세스 정보를 수집한 파일을 구간 별로 조사하여, D-CPU%가 큰 순서 정보를 보여준다.

D-CPU%는 다음과 같이 계산된다.

TIME 필드에는 해당 프로세스가 CPU를 사용한 누적시간이 있고, CHILDTIME 필드에는 해당 프로세스의
자식 프로세스들이 사용한 CPU 누적 시간이 있다.
데이타를 수집한 구간 동안 프로세스의 TIME의 증가분과 CHILDTIME 증가분을 각각 D-TIME 과 D-CHILD 에 표시한다.
D-TIME 과 D-CHILDTIME 의 합계를 데이타를 수집한 시간 간격과 나누면 D-WCPU% 가 된다.
여기서 D-WCPU%에 CPU 개수로 나누면 D-CPU%가 된다.

D-WCPU% = (D-TIME + D-CHILD) / interval * 100 
D-CPU% = D-WCPU% / NCPU

-q 옵션을 지정하면, D-CHILD 값은 사용하지 않고, D-TIME 값만으로 D-CPU%을 계산한다.

# psparse -A d-all-size -t5 psinfo-A.log
===========================================================================================================
Sort D-ALL-SIZE: Date.time 0310.11:13:07 - 0310.19:13:07 :  NCPU 12 Interval 30 Count 961 minimum_memsize=1024KB
===========================================================================================================
  PID  PPID USERNAME   ELAPSED   SIZE    RSS HP+STK  CNT CCNT   D-ALL-SIZE  D-ONE CMDLINE
21342     1 xxuser     0d47862 1622.M 1107.M 165.6M  960  172       23.15M 11.63M senddata -p 100
21335     1 xxuser     0d52002 1624.M 1106.M 168.0M  960  197       21.60M 11.72M senddata -p 300
26037 26033 xxuser     0d51493 201.0M 196.1M 186.1M  960  211       21.42M 2.211M ns-httpd -d /home3/iws6000
18825     1 xxuser     0d52365 1641.M 1123.M 185.3M  960  191       20.31M 11.37M senddata -p 200
21348     1 xxuser     0d48012 1619.M 1083.M 163.1M  960  172       19.86M 11.31M senddata -p 400

-A d-all-size을 지정하면, 전체 구간의 데이타를 조사하여 각 프로세스의 메모리 크기(SIZE)가 제일 컸을 때의 메모리 크기와
제일 작았을 때의 크기와의 차이를 D-ALL-SIZE 에 표시하고, 한번의 변화중에 제일 컸던 크기를 D-ONE 에 표시한다.
ELAPSED, SIZE, RSS, HP+STK의 값은 SIZE 가 가장 컸을 때의 값이다. 정렬 순서는 D-ALL-SIZE 가 큰 순서이다.

d-all-size 대신에 d-all-rss, d-all-hp+stk 를 지정하면, 각각 RSS, HP+STK 에 대해 조사한다.

# psparse -A d-all-time -t5 psinfo-A.log
===========================================================================================================
Sort D-ALL-TIME: Date.time 0310.11:13:07 - 0310.11:13:07 :  NCPU 12 Interval 30 Count 961 All_time 28800.0000
===========================================================================================================
  PID  PPID USERNAME  ELAPSED  CNT CCNT  D-ALL-TIME     D-ONE D-WCPU% D-CPU% CMDLINE
21342     1 xxuser    0d52152  960  960  52208.6000  271.1900 181.28% 15.11% senddata -p 100
 6947     1 xxuser   18d60662  960  960  14308.1100   21.5100  49.68%  4.14% recvdata
18825     1 xxuser    0d52395  960  960  12534.7400   55.5500  43.52%  3.63% senddata -p 200
21335     1 xxuser    0d52152  960  960  12360.3900   54.7000  42.92%  3.58% senddata -p 300
21348     1 xxuser    0d52152  960  960  11375.9400   55.5700  39.50%  3.29% senddata -p 400

-A d-all-time을 지정하면, 전체 구간의 데이타를 조사하여 해당 프로세스의 CPU 누적 사용시간(TIME 필드)의 증가치를 D-ALL-TIME 필드에 표시한다.
전체 프로세스를 수집한 시간은 초단위로 All_time에 표시된다.
D-ALL-TIME 의 값을 All_time 로 나누면 D-WCPU%가 된다. D-WCPU%를 CPU 개수로 나누면 D-WCPU%가 된다.

D-CPU%는 해당 프로세스가 전체 구간에 대해 CPU를 사용한 사용률이 된다.

# psparse -A PROC-CPU -t5 psinfo-A.log
===========================================================================================================
Sort PROC-CPU: Date.time 0310.11:13:07 - 0310.19:13:07 :  NCPU 12 Interval 30 Count 961
===========================================================================================================
NPROC  NLWP  CNT HP+STK    WCPU%    CPU% T1-NLWP T1-SIZE T1-RSS T1-HP+STK T1-WCPU% T1-CPU% COMMAND
   13  1194  961 832.6M  996.60%  83.05%     213  1641.M 1123.M    185.3M  850.12%  70.84% java
    3     3    8 2.570M   99.80%   8.32%       1  14.97M 4.008M    0.883M   43.47%   3.62% pstack
    2     2   11 44.31M   98.88%   8.24%       1  24.34M 23.58M    22.15M   98.88%   8.24% sendq
   16   350  961 800.5M   29.70%   2.48%     108  201.0M 196.1M    186.1M   16.30%   1.36% ns-httpd
    4    82  961 172.6M   11.21%   0.94%      29  105.3M 86.02M    68.03M    7.14%   0.60% gated

-A 옵션에 PROC- 또는 USER- 가 붙은 다음과 같은 정렬순서를 지정할 수 있다.

	PROC-NPROC, PROC-NLWP, PROC-HP+STK, PROC-CPU, PROC-SUM-CPU
	USER-NPROC, USER-NLWP, USER-HP+STK, USER-CPU, USER-SUM-CPU

PROC-를 지정하면 프로세스를 수집한 구간 별로 같은 이름을 가진 명령어를 그룹핑하여 NPROC(프로세스의 개수), NLWP(lwp 개수), WCPU%, CPU%를 그룹별 합산하여, 전체 구간 동안 최대 값들만 모은다. 그 데이타 정렬 순서는 PROC-NPROC, PROC-NLWP, PROC-HP+STK, PROC-CPU에 따라 각각 NPROC, NLWP, HP+STK, CPU% 가 큰 순으로 보여준다.

USER-를 지정하면 프로세스를 수집한 구간 별로 같은 사용자 이름을 가진 명령어를 그룹핑하여 NPROC(프로세스의 개수), NLWP(lwp 개수), WCPU%, CPU%를 그룹별 합산하여, 전체 구간 동안 최대 값들만 모은다. 그 데이타 정렬 순서는 USER-NPROC, USER-NLWP, USER-HP+STK, USER-CPU에 따라 각각 NPROC, NLWP, HP+STK, CPU% 가 큰 순으로 보여준다.

T1-SIZE, T1-RSS, T1-HP+STK, T1-WCPU%, T1-CPU%는 하나의 프로세스 중에서 각각 SIZE, RSS, HP+STK, WCPU%, CPU%가 가장 큰 값을 보여준다.

# psparse -A PROC-SUM-CPU -t10 psinfo.log
===========================================================================================================
Sort PROC-SUM-CPU: Date.time 0329.00:00:01 - 0330.00:00:01 :  NCPU 160 Interval 60 Count 1441
===========================================================================================================
  SUM-WCPU%   SUM-CPU% COMMAND
 2789835.20   17402.00 oracledb
 2093513.60   13082.53 java
  132348.83     827.08 sortcl
   85698.27     535.54 fsflush
   70017.77     437.51 oracleweb
   62607.49     389.77 op_post
   54958.93     343.50 perfbar
   43493.04     271.54 post
   32476.10     202.98 ora_p001_was
   32353.79     202.36 sm_mon

-A 옵션에 PROC-SUM-CPU를 지정하면, 같은 이름을 가진 프로세스들을 그룹핑하여, 데이타를 수집한 전체 구간에서 그 그룹에 속하는 프로세스들의 CPU 사용률을 모두 합하여 SUM-WCPU%, SUM-CPU% 에 표시하고, CPU 값이 큰 순서로 보여준다.
프로세스 정보를 수집한 psinfo.log 파일에서 CPU를 많이 사용한 프로세스들에 대한 CPU 사용률 그래프를 만들 때, 어떤 프로세스 그룹이 CPU를 많이 사용했는지 확인할 때 유용한다.
위의 결과를 바탕으로 상위 5개의 프로세스 그룹에 대한 CPU 사용률을 출력하려면 다음과 같이 할 수 있다.

# psparse -S -L -N oraclepdb,java,sortcl,fsflush,oracleweb -o CPU psinfo.log > ps.data
# cat ps.data
# FIELD: CPU%: CPU usage
 oraclepdb     java   sortcl  fsflush oracleweb
   30.30%   12.99%    0.60%    0.47%    1.21%
   27.00%   16.05%    1.84%    0.46%    0.31%
   23.39%   19.97%    0.64%    0.39%    0.02%
   23.80%   19.36%    2.16%    0.41%    1.30%
   25.50%   18.57%    2.06%    0.28%    1.70%
   23.20%   17.58%    0.74%    0.27%    1.69%
   23.83%   19.56%    0.67%    0.24%    0.79%
   27.06%   20.15%    0.67%    0.37%    1.03%
   28.85%   20.88%    0.67%    0.35%    1.38%
   28.59%   18.98%    1.90%    0.37%    1.68%
   29.86%   19.22%    1.99%    0.35%    0.82%
... skip ...

-o 옵션과 함께 -N 옵션을 지정할 때, -N 옵션에 맨 마지막에 '+' 기호를 추가하면, -N 옵션에서 선택된 프로세스 이외에 프로세스들의 값을 'OTHERS' 프로세스 이름으로 보여준다.

# psparse -S -L -N oraclepdb,java,sortcl,fsflush,oracleweb,+ -o CPU psinfo.log
# FIELD: CPU%: CPU usage
 oraclepdb     java   sortcl  fsflush oracleweb  OTHERS
   30.30%   12.99%    0.60%    0.47%    1.21%   1.12%
   27.00%   16.05%    1.84%    0.46%    0.31%   0.19%
   23.39%   19.97%    0.64%    0.39%    0.02%   0.28%
   23.80%   19.36%    2.16%    0.41%    1.30%   0.30%
   25.50%   18.57%    2.06%    0.28%    1.70%   0.29%
   23.20%   17.58%    0.74%    0.27%    1.69%   0.36%
   23.83%   19.56%    0.67%    0.24%    0.79%   0.71%
... skip ...

위와 같이 테이블 형태의 값이 있으면, mkgraph 명령어로 다음과 같이 그래프를 쉽게 그릴 수 있다.

# mkgraph -1 sum -B -h 100 -t 00:00:00 -i 60 -M3 "-G+:100:CPU usage 2012/03/01 DB1" -H -o cpu_usage ps.data
cpu_usage.gif:

-A PROC-SUM-CPU는 전체 구간에 대하여, 프로세스 그룹별로 CPU 사용률을 합계하여 조사하는 것이고, -A PROC-CPU는 개별 구간 별로 조사하여, 프로세스 그룹이 최고로 CPU를 많이 사용한 프로세스 그룹에 대한 정보를 출력한다.
프로세스 그룹 별로 CPU 사용량에 대하여 그래프를 그릴 경우에 -A PROC-CPU 결과에서 나온 프로세스 그룹도 참조하여 그래프를 그릴 필요가 있다.
-A PROC-CPU 옵션을 사용한 경우에 CPU 사용률이 좀 큰 것이 있는데, -A PROC-SUM-CPU 옵션을 사용했을 때에는 크게 보이지 않아서 선택되지 않았다면, 그 프로세스 그룹도 선택하여 그래프를 그리는 것이 좋다.

# psparse -A PROC-CPU -t10 psinfo.log
NPROC  NLWP  CNT HP+STK    WCPU%    CPU% T1-NLWP T1-SIZE T1-RSS T1-HP+STK T1-WCPU% T1-CPU% COMMAND
   90  3532 1441 2847.M 6269.06%  39.17%     170  2232.M 1761.M    107.8M 2301.27%  14.38% java
 1067  1476 1441 2574.M 5592.38%  34.72%      11  85403M 85273M    10.28M  109.86%   0.69% oracledb
   40    40  881 88.32M 2709.95%  16.96%       1  31.04M 24.85M    2.992M   95.21%   0.60% post
   10   150  554 2781.M 2030.76%  12.69%      21  1658.M 1656.M    1654.M  661.13%   4.13% sortcl
   58    60 1441 125.6M  988.28%   6.17%      12  29293M 29279M    5.703M   99.12%   0.62% oracleweb
    3     3  353 0.023M  283.21%   1.77%       1  1.891M 1.375M    0.008M   98.14%   0.61% gzip
   18   546 1441 4524.M  279.32%   1.73%      67  878.4M 807.0M    718.6M  195.31%   1.22% op_post
   25    25   44 0.570M  249.53%   1.51%       1  1.883M 1.430M    0.062M   18.55%   0.12% find
    3     3 1269 35.62M  166.02%   1.04%       1  17.39M 16.76M    15.87M   67.38%   0.42% sadc
   22    22  333 529.6M  135.74%   0.85%       2  92.16M 71.96M    66.64M   90.33%   0.56% sqlldr

  psparse -1 [-+] [-E|-f] [-0][-k][-Z] [-R range] [filter_options] file
  psparse -2 [-+] [-E|-f] [-0][-k][-Z] [-R range] [filter_options] file
  psparse -3 [-E|-f] [-0][-k][-Z] [-R range] [filter_options] file
-1, -2, -3, -D, -W 옵션은 수집한 데이타의 구간 별로 차이를 조사하여 결과를 보여준다

-1 옵션을 지정하면 다음 시간 간격에 수집되지 않는 프로세스 정보를 보여준다. 즉, 마지막으로 수집된 프로세스 정보를 보여준다.
-2 옵션을 지정하면 새롭게 수집된 프로세스 정보를 보여준다.
-3 한번만 프로세스 정보가 수집되고 종료된 프로세스 정보를 보여준다.

만일 열시와 열시 일분 두번 데이타를 수집하였을 경우, -1 옵션을 지정하여 사용하면, 열시에는 프로세스 정보가 수집되고, 열시 일분에는 프로세스 정보가 수집되지 않은 프로세스 정보를 보여준다. 즉, 열시에서 열시일분 사이에 종료된 프로세스를 보여준다. -2 옵션을 지정하면, 열시에서 열시 일분 사이에 시작된 프로세스를 보여준다.
-3 옵션을 지정하면, 열시에는 프로세스 정보가 처음 수집되고, 열시 일분에는 프로세스 정보가 수집되지 않은 프로세스 정보를 보여준다.

-1, -2 옵션에 -+ 옵션을 추가하면 2회 이상 프로세스 정보가 수집된 프로세스 정보만 보여준다.

-0 옵션을 함께 사용하면, 첫 컬럼에 프로세스 정보를 수집한 시간을 함께 보여준다.

  psparse -D -G cmd_names [-q] [-v] [-L] [-0] [-R range] file
  psparse -D -G cmd_names -o selfield [-q] [-v] [-L] [-0] [-R range] file
  psparse -D -g strings [-q] [-v] [-L] [-0] [-R range] file
  psparse -D -g strings -o selfield [-q] [-v] [-L] [-0] [-R range] file
  psparse -D -H [-q] [-R range] file
  psparse -D -p pids [-q] [-v] [-L] [-0] [-R range] file
  psparse -D -p pids -o selfield [-q] [-v] [-L] [-0] [-R range] file
-D 옵션은 수집한 데이타에서 구간 별로 프로세스와 그 자식 프로세스가 사용한 CPU 사용 시간을 합하여, 데이타를 수집한 시간 간격에 대한 백분율로 CPU 사용률을 D-CPU%에 표시한다.
(-q 옵션을 지정하면, 자식 프로세스가 사용한 CPU 사용시간을 제외한다.)

psparse -D [-q] [{-t n | -a}] [-0] [-R range] file
# psparse -D psinfo-A.log
Date.time 0609.04:36:17 proc 72 lwp 145 cpu 8.52% hp+stk 44.27M : D-ALL 1.8299 [ 36.60% ] (D-TIME 1.4299 D-CHILD 0.4000)
  PID  PPID     USER HP+STK D-WCPU% D-CPU%  ELAPSED     D-TIME    D-CHILD CMDLINE
 2169  2168    guest 1.031M  13.00% 13.00%      0d1     0.6501     0.0000 senddata -p axbi
  426   408    guest 0.055M   7.20%  7.20%  0d23654     0.0210     0.3400 /usr/bin/ksh
  288   283    guest 9.227M   7.00%  7.00%  0d23703     0.3503     0.0000 rcvdata -p axbi
 2162   426    guest 0.336M   3.40%  3.40%      0d1     0.1106     0.0600 test
  388   381    guest 1.625M   3.00%  3.00%  0d23671     0.1518     0.0000 dtwm
  408   381    guest 9.766M   0.80%  0.80%  0d23657     0.0403     0.0000 /usr/dt/bin/dtterm -session dtJEaqYa
 2154   830     root 0.117M   0.60%  0.60%     0d10     0.0312     0.0000 psinfo -A 5 20
 2150   449    guest 0.117M   0.60%  0.60%     0d44     0.0300     0.0000 psinfo -H 2 1000
 2168  2167    guest 0.039M   0.40%  0.40%      0d1     0.0211     0.0000 call 128102 23
 2167  2162    guest 0.023M   0.40%  0.40%      0d1     0.0205     0.0000 monitor

Date.time 0609.04:36:22 proc 72 lwp 145 cpu 17.46% hp+stk 46.35M : D-ALL 4.9360 [ 98.72% ] (D-TIME 2.9660 D-CHILD 1.9700)
  PID  PPID     USER HP+STK D-WCPU% D-CPU%  ELAPSED     D-TIME    D-CHILD CMDLINE
 2172  2171    guest 3.109M  56.00% 56.00%      0d3     2.8000     0.0000 senddata -p axbi
 2162   426    guest 0.344M  39.60% 39.60%      0d6     0.0109     1.9700 test
  288   283    guest 9.227M   1.20%  1.20%  0d23708     0.0611     0.0000 rcvdata -p axbi
 2154   830     root 0.117M   0.60%  0.60%     0d15     0.0304     0.0000 psinfo -A 5 20
 2150   449    guest 0.117M   0.40%  0.40%     0d49     0.0216     0.0000 psinfo -H 2 1000
 2171  2170    guest 0.039M   0.40%  0.40%      0d3     0.0212     0.0000 sendcmd
 2170  2162    guest 0.023M   0.40%  0.40%      0d3     0.0208     0.0000 viewer xx.txt

... skip ...

-D 옵션만 지정하면, 수집한 데이타에서 구간 별로 D-CPU%가 큰 순서로 정렬하여 보여준다. 이때 시간의 변화가 있는 프로세스 중에서 상위 20개(-t 옵션을 사용하여 변경가능)의 프로세스 정보를 보여준다.
-a 옵션을 지정하면 시간의 변화가 있는 모든 프로세스 정보를 보여준다.

시간의 변화가 없는 프로세스는 그 구간에 아무런 동작을 하지 않은 프로세스라고 말할 수는 없다. CPU 사용시간은 1/10000 초 단위로 측정되기 때문에 1/10000 초 보다 짧게 CPU를 사용할 경우에는 시간 측정이 되지 않을 수 있다.

각 프로세스와 그 자식 프로세스가 사용한 시간을, 데이타를 수집한 시간 간격에 대한 비율을 D-WCPU%와 D-CPU%에 보여준다.
구간 별로 전체 프로세스가 사용한 CPU 시간을 헤더 정보의 D-ALL 에 나타내고 사용률을 괄호 안에 표시한다. 그리고 각각 프로세스가 사용한 CPU 시간과 자식 프로세스가 사용한 CPU 시간을 D-TIME과 D-CHILD에 표시한다. D-ALL과 D-TIME과 T-CHILD의 다음과 같은 형식으로 표시된다.

second.nnnn (nnnn은 1/10000초)
실행중인 프로세스가 사용하는 CPU 시간은1/10000 초 단위로 측정하고, 실행이 끝난 프로세스의 CPU 사용 시간은 부모 프로세스에게 알려주는데,
이때에는, CPU 사용 시간은  1/100 초 단위로 부모 프로세스에게 전해줍니다 (Solaris 11.3 현재까지).
그래서, 1/100초 이하의 시간은 자식 프로세스가 사용한 시간에 반영되지 않습니다.
아주 짧게 실행된 프로세스의 CPU 사용량은 부모 프로세스에게 전혀 전달되지 않습니다.

NOTE:   프로세스 CPU 사용시간에는 다음과 같은 오차가 발생할 수 있다.
(D-CPU% 값이 상식 밖의 값이 나오면 무시할 필요가 있습니다.)

1)   (psinfo 명령어가 시스템 전체 lock을 걸고 모든 프로세스 정보를 수집하고 난 뒤에 lock을 푸는 것이 아니기 때문에, 부모 프로세스 정보를 수집한 후에 그 자식 프로세스 정보를 수집하기 전에 그 자식 프로세스가 종료되거나, 자식 프로세스 정보를 수집한 후 그 부모 프로세스 정보를 수집하기 전에 자식 프로세스가 종료될 경우에 오차가 발생할 수 있다.)

2)   그리고 자식 프로세스가 부모 프로세스와의 관계를 끊고 데몬 프로세스(부모 프로세스 ID가 1)로 변환 될 경우, 그 프로세스가 종료될 때, 자신의 CPU 사용량을 친부모 프로세스에게 돌려준다. 만일 부모 프로세스가 종료되었다면 그 부모의 부모 프로세스에게 돌려준다.
그러나 psinfo 명령어의 출력에는 친부모 프로세스가 무엇인지 나타나 있지 않다. 이 경우 psparse 명령어는 변화된 시간의 차이로 판단하여 친부모 프로세스를 추정하여 시간을 보정한다. 이 경우에 제대로 보정이 되지 않을 경우 오차가 발생한다.

3)   또한 데이타를 수집하는 시간이 정확히 1/10000초 까지 정밀하지 않을 수 있기 때문에 약간의 오차가 있을 수 있다.

-D 옵션은 두개의 구간 별로 CPU 누적사용 시간을 조사한다. 예를 들어, psparse -D 옵션을 사용하여 출력된 데이타의 시간이 0609.04:01:00 이라고 하면, 이 시간 이전의 시간 간격(여기서 60 초 간격)부터 표시된 시간까지 값이다.
여기서는 0609.04:00:00 부터 0609.04:01:00 사이에 사용된 것이 0609.04:01:00에 표시된다.

        0609.04:00:00   0609.04:01:00   0609.04:02:00
              |               |               |
              |<------------->|               |
                              |               |
                              |               |
                              |<------------->|
                              |               |
                        0609.04:01:00   0609.04:02:00

-q 옵션을 지정하면, 다음과 같이 자식 프로세스가 사용한 CPU 시간에 대한 정보는 계산하지 않는다.

# psparse -D -q psinfo-A.log
Date.time 0609.04:36:17 proc 72 lwp 145 cpu 8.52% hp+stk 44.27M : D-ALL 1.8299 [ 28.60% ] (D-TIME 1.4299)
  PID  PPID     USER HP+STK D-WCPU% D-CPU%  ELAPSED     D-TIME CMDLINE
 2169  2168    guest 1.031M  13.00% 13.00%      0d1     0.6501 senddata -p axbi
  288   283    guest 9.227M   7.00%  7.00%  0d23703     0.3503 rcvdata -p axbi
  388   381    guest 1.625M   3.00%  3.00%  0d23671     0.1518 dtwm
 2162   426    guest 0.336M   2.21%  2.21%      0d1     0.1106 test
  408   381    guest 9.766M   0.80%  0.80%  0d23657     0.0403 /usr/dt/bin/dtterm -session dtJEaqYa
 2154   830     root 0.117M   0.60%  0.60%     0d10     0.0312 psinfo -A 5 20
 2150   449    guest 0.117M   0.60%  0.60%     0d44     0.0300 psinfo -H 2 1000
  426   408    guest 0.055M   0.42%  0.42%  0d23654     0.0210 /usr/bin/ksh
 2168  2167    guest 0.039M   0.40%  0.40%      0d1     0.0211 call 128102 23
 2167  2162    guest 0.023M   0.40%  0.40%      0d1     0.0205 monitor
... skip ...

psparse -D -G cmd_names [-q] [-v] [-L] [-0] [-R range] file
psparse -D -G cmd_names -o selfield [-q] [-v] [-L] [-0] [-R range] file
psparse -D -g strings [-q] [-v] [-L] [-0] [-R range] file
psparse -D -g strings -o selfield [-q] [-v] [-L] [-0] [-R range] file
# psparse -D -G java p.log
NPROC NLWP MAX_SIZE MAX_RSS MAX_HS HP+STK D-WCPU% D-CPU%  ELAPSED    D-TIME   D-CHILD DT-WCPU% DT-CPU% DC-WCPU% DC-CPU% CMD
   11 1177   1621.M  860.2M 185.3M 826.3M 197.80% 16.48%  0d23382   59.3400    0.0000  197.80%  16.48%    0.00%   0.00% java
   11 1177   1621.M  860.4M 185.3M 826.3M 209.90% 17.49%  0d23412   62.9700    0.0000  209.90%  17.49%    0.00%   0.00% java
   11 1177   1621.M  861.2M 185.3M 826.3M 204.73% 17.06%  0d23442   61.4200    0.0000  204.73%  17.06%    0.00%   0.00% java
   11 1177   1621.M  861.4M 185.3M 826.3M 207.57% 17.30%  0d23472   62.2700    0.0000  207.57%  17.30%    0.00%   0.00% java
   11 1177   1621.M  862.7M 185.3M 826.3M 235.67% 19.64%  0d23502   70.7000    0.0000  235.67%  19.64%    0.00%   0.00% java
.. skip ...

# psparse -D -G java -0 p.log
    DATE.TIME NPROC NLWP MAX_SIZE MAX_RSS MAX_HS HP+STK D-WCPU% D-CPU%  ELAPSED    D-TIME   D-CHILD DT-WCPU% DT-CPU% DC-WCPU% DC-CPU% CMD
0310.11:13:37    11 1177   1621.M  860.2M 185.3M 826.3M 197.80% 16.48%  0d23382   59.3400    0.0000  197.80%  16.48%    0.00%   0.00% java
0310.11:14:07    11 1177   1621.M  860.4M 185.3M 826.3M 209.90% 17.49%  0d23412   62.9700    0.0000  209.90%  17.49%    0.00%   0.00% java
0310.11:14:37    11 1177   1621.M  861.2M 185.3M 826.3M 204.73% 17.06%  0d23442   61.4200    0.0000  204.73%  17.06%    0.00%   0.00% java
0310.11:15:07    11 1177   1621.M  861.4M 185.3M 826.3M 207.57% 17.30%  0d23472   62.2700    0.0000  207.57%  17.30%    0.00%   0.00% java
0310.11:15:37    11 1177   1621.M  862.7M 185.3M 826.3M 235.67% 19.64%  0d23502   70.7000    0.0000  235.67%  19.64%    0.00%   0.00% java
.. skip ...

# psparse -D -G java,ns-httpd  p.log
Date.time 0310.11:13:37 proc 183 zomb 6 run 0 lwp 1894 cpu 19.80% load1m 2.96 ptime 4267978.19 hp+stk 1893072K tick 3000
NPROC NLWP MAX_SIZE MAX_RSS MAX_HS HP+STK D-WCPU% D-CPU%  ELAPSED    D-TIME   D-CHILD DT-WCPU% DT-CPU% DC-WCPU% DC-CPU% CMD
   11 1177   1621.M  860.2M 185.3M 826.3M 197.80% 16.48%  0d23382   59.3400    0.0000  197.80%  16.48%    0.00%   0.00% java
   16  268   179.7M  175.0M 166.0M 741.9M  24.37%  2.03%  0d22867    7.3100    0.0000   24.37%   2.03%    0.00%   0.00% ns-httpd

Date.time 0310.11:14:07 proc 183 zomb 6 run 0 lwp 1894 cpu 19.70% load1m 3.13 ptime 4268060.20 hp+stk 1893424K tick 3000
NPROC NLWP MAX_SIZE MAX_RSS MAX_HS HP+STK D-WCPU% D-CPU%  ELAPSED    D-TIME   D-CHILD DT-WCPU% DT-CPU% DC-WCPU% DC-CPU% CMD
   11 1177   1621.M  860.4M 185.3M 826.3M 209.90% 17.49%  0d23412   62.9700    0.0000  209.90%  17.49%    0.00%   0.00% java
   16  268   180.1M  175.3M 166.4M 742.2M  23.77%  1.98%  0d22897    7.1300    0.0000   23.77%   1.98%    0.00%   0.00% ns-httpd

Date.time 0310.11:14:37 proc 183 zomb 6 run 0 lwp 1894 cpu 19.08% load1m 2.93 ptime 4268142.26 hp+stk 1893448K tick 3000
NPROC NLWP MAX_SIZE MAX_RSS MAX_HS HP+STK D-WCPU% D-CPU%  ELAPSED    D-TIME   D-CHILD DT-WCPU% DT-CPU% DC-WCPU% DC-CPU% CMD
   11 1177   1621.M  861.2M 185.3M 826.3M 204.73% 17.06%  0d23442   61.4200    0.0000  204.73%  17.06%    0.00%   0.00% java
   16  268   180.1M  175.3M 166.4M 742.2M  21.50%  1.79%  0d22927    6.4500    0.0000   21.50%   1.79%    0.00%   0.00% ns-httpd
.. skip ...

# psparse -D -G java,ns-httpd -o d-cpu p.log
# FIELD: D-CPU%: Delta CPU usage [CPU% from D-TIME+D-CHILDTIME]
     java ns-httpd
   16.48%    2.03%
   17.49%    1.98%
   17.06%    1.79%
   17.30%    2.08%
   19.64%    1.76%
   16.80%    1.96%
.. skip ...

# psparse -D -G java,ns-httpd -o d-cpu -0 p.log
# FIELD: D-CPU%: Delta CPU usage [CPU% from D-TIME+D-CHILDTIME]
   *DATE.TIME     java ns-httpd
0310.11:13:37   16.48%    2.03%
0310.11:14:07   17.49%    1.98%
0310.11:14:37   17.06%    1.79%
0310.11:15:07   17.30%    2.08%
0310.11:15:37   19.64%    1.76%
0310.11:16:07   16.80%    1.96%
.. skip ...

# psparse -D -G java,ns-httpd,gated p.log
# FIELD: D-CPU%: Delta CPU usage [CPU% from D-TIME+D-CHILDTIME]
        *Time    java ns-httpd  gated
0310.11:13:37  16.48%   2.03%   0.75%
0310.11:14:07  17.49%   1.98%   0.64%
0310.11:14:37  17.06%   1.79%   0.59%
0310.11:15:07  17.30%   2.08%   0.66%
0310.11:15:37  19.64%   1.76%   0.70%
... skip ...

# psparse -D -G java,ns-httpd,gated -o HP+STK p.log
# FIELD: HP+STK: all size of Heap + Stack
        *Time    java ns-httpd  gated
0310.11:13:37  826.3M  741.9M  168.7M
0310.11:14:07  826.3M  742.2M  168.7M
0310.11:14:37  826.3M  742.2M  168.7M
0310.11:15:07  826.3M  742.4M  168.7M
0310.11:17:37  826.3M  742.8M  168.7M
... skip ...

# psparse -D -g java -v p.log
# COMMAND: /usr/j2sdk1.4.2_06/bin/java -p1211 -Dtestdbadmin -server -verbose:gc -Dweblogic
# COMMAND: /usr/j2sdk1.4.2_06/bin/java -p1203 -Dhking_c -server -verbose:gc -Dweblogic.jsp
# COMMAND: /usr/j2sdk1.4.2_06/bin/java -p1201 -Dhking_a -server -verbose:gc -Dweblogic.jsp
# COMMAND: /usr/j2sdk1_3_1_09/bin/../bin/sparc/native_threads/java -DSMS -classpath .:/hom
# COMMAND: /usr/j2sdk1_3_1_09/bin/../bin/sparc/native_threads/java -DMulti -cp testdbadmin
# COMMAND: /usr/j2sdk1.4.2_06/bin/java -p1210 -Dtestdbadminerver -verbose:gc -Dweblogic.js
# COMMAND: /usr/j2sdk1_3_1_09/bin/../bin/sparc/native_threads/java -DREV_SMS -classpath .:
# COMMAND: /usr/j2sdk1.4.2_06/bin/java -p1207 -DhkingA_a -server -verbose:gc -Dweblogic.js
# COMMAND: /usr/local/RC/jre/bin/../bin/sparc/native_threads/java -DNcerti.Agent -classpat
NPROC NLWP MAX_SIZE MAX_RSS MAX_HS HP+STK D-WCPU% D-CPU%  ELAPSED    D-TIME   D-CHILD DT-WCPU% DT-CPU% DC-WCPU% DC-CPU% STRING
   11 1177   1621.M  860.2M 185.3M 826.3M 197.80% 16.48%  0d23382   59.3400    0.0000  197.80%  16.48%    0.00%   0.00% java
   11 1177   1621.M  860.4M 185.3M 826.3M 209.90% 17.49%  0d23412   62.9700    0.0000  209.90%  17.49%    0.00%   0.00% java
   11 1177   1621.M  861.2M 185.3M 826.3M 204.73% 17.06%  0d23442   61.4200    0.0000  204.73%  17.06%    0.00%   0.00% java
   11 1177   1621.M  861.4M 185.3M 826.3M 207.57% 17.30%  0d23472   62.2700    0.0000  207.57%  17.30%    0.00%   0.00% java
   11 1177   1621.M  862.7M 185.3M 826.3M 235.67% 19.64%  0d23502   70.7000    0.0000  235.67%  19.64%    0.00%   0.00% java
... skip ...

-D -G 옵션을 지정하면, 지정한 이름의 프로세스를 구간 별로 찾아서 증가된 CPU 시간(TIME, CHILDTIME)에 대해 D-CPU%을 계산한다.
-G 옵션에 여러 개의 명령어를 지정할 경우, 명령어를 콤마(,)로 분리하면 된다. 만일 선택하려고 하는 명령어에 콤마가 포함되어 있으면, 백슬래쉬(\)를 콤마 앞이 지정하면 된다.

-o 옵션을 지정하면 지정한 필드 데이타만 출력한다.
필드명은 [표2]에 있는 컬럼명을 지정하면 된다 (ELAPSED, STRING, CMD 제외). 대소문자 구별은 없고, 필드명에 있는 %는 사용하지 않아도 된다.

[표 2]
컬럼 설명
NPROC 프로세스 개수
NLWP 프로세스의 LWP(light-weight process) 개수의 합계
MAX_SIZE 프로세스 중에서 SIZE가 가장 큰 프로세스의 SIZE
MAX_RSS 프로세스 중에서 RSS가 가장 큰 프로세스의 RSS
MAX_HS 프로세스 중에서 HP+STK가 가장 큰 프로세스의 HP+STK
HP+STK 프로세스의 HP+STK의 합계
D-WCPU%, D-CPU% D-CPU% : Delta CPU 사용률: D-TIME과 D-CHILD 시간을 합하여 사용률 표시
D-WCPU% = D-CPU% * number of processors(CPU)

-q 옵션이 지정되면, D-CHILD 시간은 계산하지 않는다.

ELAPSED 가장 최근에 실행된 프로세스의 ELAPSED
D-TIME 구간 동안 살아 있는 프로세스가 사용한 CPU 사용시간의 합계;
출력 형식: second.nnnn
D-CHILD 구간 동안에 자식 프로세스 사용한 CPU 사용시간의 합계;
출력 형식: second.nnnn
DT-WCPU%, DT-CPU% DT-CPU% : Delta CPU 사용률: D-TIME 시간으로 사용률 표시
DT-WCPU% = DT-CPU% * number of processors(CPU)
DC-WCPU%, DC-CPU% DC-CPU% : Delta CPU 사용률: D-CHILD 시간으로 사용률 표시
DC-WCPU% = DC-CPU% * number of processors(CPU)
STRING
CMD
STRING: -g 옵션에 지정한 문자열을 표시한다.
CMD: -G 옵션에 지정한 문자열을 표시한다.


-v 옵션를 추가적으로 지정하면 선택된 명령어에 대한 정보를 다음의 형식으로 출력한다.

# COMMAND: <COMMAND-LINE>

-G 옵션에 지정된 문자열은 명령어 이름에서 디렉토리명을 뺀 마지막 파일명과 정확히 일치하는 명령어에 대해서만 처리한다.
그러나 -g 옵션을 지정하면, -g 옵션에 지정된 문자열을 포함하는 명령어에 대하여 처리한다.

-g 옵션에 두개 이상의 이름을 지정하면, 두개의 프로세스 정보가 없는 구간에 대해서는 정보를 전혀 표시하지 않고, 둘중에 하나의 이름에 대한 정보만 있으며, 없는 쪽은 dummy 라인이 추가된다.

-L 옵션을 지정하면, 수집된 프로세스 정보가 없어도, dummy 라인 정보를 보여준다. -L 옵션을 지정하지 않으면, 수집된 프로세스 정보가 없을 경우에는 그 시간대 정보는 출력되지 않는다.

# psparse -D -G cron,sendq p.log
Date.time 0310.11:13:37 proc 183 zomb 6 run 0 lwp 1894 cpu 19.80% load1m 2.96 ptime 4267978.19 hp+stk 1893072K tick 3000
NPROC NLWP MAX_SIZE MAX_RSS MAX_HS HP+STK D-WCPU% D-CPU%  ELAPSED    D-TIME   D-CHILD DT-WCPU% DT-CPU% DC-WCPU% DC-CPU% STRING
    1    1   2.047M  1.305M 0.070M 0.070M   8.20%  0.68% 18d36151    0.0000    2.4600    0.00%   0.00%    8.20%   0.68% cron
    0    0   0.000M  0.000M 0.000M 0.000M   0.00%  0.00%        -    0.0000    0.0000    0.00%   0.00%    0.00%   0.00% sendq

Date.time 0310.11:14:07 proc 183 zomb 6 run 0 lwp 1894 cpu 19.70% load1m 3.13 ptime 4268060.20 hp+stk 1893424K tick 3000
NPROC NLWP MAX_SIZE MAX_RSS MAX_HS HP+STK D-WCPU% D-CPU%  ELAPSED    D-TIME   D-CHILD DT-WCPU% DT-CPU% DC-WCPU% DC-CPU% STRING
    1    1   2.047M  1.305M 0.070M 0.070M  11.40%  0.95% 18d36181    0.0100    3.4100    0.03%   0.00%   11.37%   0.95% cron
    0    0   0.000M  0.000M 0.000M 0.000M   0.00%  0.00%        -    0.0000    0.0000    0.00%   0.00%    0.00%   0.00% sendq

psparse -D -p pids [-q] [-v] [-L] [-0] [-R range] file
psparse -D -p pids -o selfield [-q] [-v] [-L] [-0] [-R range] file

# psparse -D -p 428 p.log
  PID  PPID   USER   SIZE    RSS HP+STK NLWP D-WCPU% D-CPU%  ELAPSED   D-TIME  D-CHILD DT-WCPU% DT-CPU% DC-WCPU% DC-CPU%
  428     1   root 2.047M 1.305M 0.070M    1   8.20%  0.68% 18d36151   0.0000   2.4600    0.00%   0.00%    8.20%   0.68%
  428     1   root 2.047M 1.305M 0.070M    1  11.40%  0.95% 18d36181   0.0100   3.4100    0.03%   0.00%   11.37%   0.95%
  428     1   root 2.047M 1.305M 0.070M    1   0.00%  0.00% 18d36211   0.0000   0.0000    0.00%   0.00%    0.00%   0.00%
  428     1   root 2.047M 1.305M 0.070M    1  24.17%  2.01% 18d36241   0.0300   7.2200    0.10%   0.01%   24.07%   2.01%
  428     1   root 2.047M 1.305M 0.070M    1   0.00%  0.00% 18d36271   0.0000   0.0000    0.00%   0.00%    0.00%   0.00%
... skip ...

# psparse -D -p 428 -0 p.log
    DATE.TIME   PID  PPID   USER   SIZE    RSS HP+STK NLWP D-WCPU% D-CPU%  ELAPSED   D-TIME  D-CHILD DT-WCPU% DT-CPU% DC-WCPU% DC-CPU%
0310.11:13:37   428     1   root 2.047M 1.305M 0.070M    1   8.20%  0.68% 18d36151   0.0000   2.4600    0.00%   0.00%    8.20%   0.68%
0310.11:14:07   428     1   root 2.047M 1.305M 0.070M    1  11.40%  0.95% 18d36181   0.0100   3.4100    0.03%   0.00%   11.37%   0.95%
0310.11:14:37   428     1   root 2.047M 1.305M 0.070M    1   0.00%  0.00% 18d36211   0.0000   0.0000    0.00%   0.00%    0.00%   0.00%
0310.11:15:07   428     1   root 2.047M 1.305M 0.070M    1  24.17%  2.01% 18d36241   0.0300   7.2200    0.10%   0.01%   24.07%   2.01%
0310.11:15:37   428     1   root 2.047M 1.305M 0.070M    1   0.00%  0.00% 18d36271   0.0000   0.0000    0.00%   0.00%    0.00%   0.00%
... skip ...

# psparse -D -p 6947 -v p.log
# COMMAND:  6947     1  2d35339 /usr/j2sdk1.4.2_06/bin/java -p1211 -Dtestdbadmin -server -verbose:gc -Dweblogic
    DATE.TIME   PID  PPID   USER   SIZE    RSS HP+STK NLWP D-WCPU% D-CPU%  ELAPSED   D-TIME  D-CHILD DT-WCPU% DT-CPU% DC-WCPU% DC-CPU%
0310.11:13:37  6947     1 xxuser 449.0M 302.9M 33.93M   67  50.50%  4.21% 18d31892  15.1500   0.0000   50.50%   4.21%    0.00%   0.00%
0310.11:14:07  6947     1 xxuser 449.0M 302.9M 33.93M   67  50.17%  4.18% 18d31922  15.0500   0.0000   50.17%   4.18%    0.00%   0.00%
0310.11:14:37  6947     1 xxuser 449.0M 302.9M 33.93M   67  51.50%  4.29% 18d31952  15.4500   0.0000   51.50%   4.29%    0.00%   0.00%
0310.11:15:07  6947     1 xxuser 449.0M 302.9M 33.93M   67  53.00%  4.42% 18d31982  15.9000   0.0000   53.00%   4.42%    0.00%   0.00%
0310.11:15:37  6947     1 xxuser 449.0M 302.9M 33.93M   67  45.83%  3.82% 18d32012  13.7500   0.0000   45.83%   3.82%    0.00%   0.00%
... skip ...

# psparse -D -p 428,6947,7111 p.log
Date.time 0310.11:13:37 proc 183 zomb 6 run 0 lwp 1894 cpu 19.80% load1m 2.96 ptime 4267978.19 hp+stk 1893072K tick 3000
  PID  PPID     USER   SIZE    RSS HP+STK NLWP D-WCPU% D-CPU%  ELAPSED    D-TIME   D-CHILD DT-WCPU% DT-CPU% DC-WCPU% DC-CPU%
  428     1     root 2.047M 1.305M 0.070M    1   8.20%  0.68% 18d36151    0.0000    2.4600    0.00%   0.00%    8.20%   0.68%
 6947     1   xxuser 449.0M 302.9M 33.93M   67  50.50%  4.21% 18d31892   15.1500    0.0000   50.50%   4.21%    0.00%   0.00%
 7111  7108     root 93.08M 73.71M 56.26M   21   4.13%  0.34% 18d31639    1.2400    0.0000    4.13%   0.34%    0.00%   0.00%

Date.time 0310.11:14:07 proc 183 zomb 6 run 0 lwp 1894 cpu 19.70% load1m 3.13 ptime 4268060.20 hp+stk 1893424K tick 3000
  PID  PPID     USER   SIZE    RSS HP+STK NLWP D-WCPU% D-CPU%  ELAPSED    D-TIME   D-CHILD DT-WCPU% DT-CPU% DC-WCPU% DC-CPU%
  428     1     root 2.047M 1.305M 0.070M    1  11.40%  0.95% 18d36181    0.0100    3.4100    0.03%   0.00%   11.37%   0.95%
 6947     1   xxuser 449.0M 302.9M 33.93M   67  50.17%  4.18% 18d31922   15.0500    0.0000   50.17%   4.18%    0.00%   0.00%
 7111  7108     root 93.08M 73.71M 56.26M   21   3.10%  0.26% 18d31669    0.9300    0.0000    3.10%   0.26%    0.00%   0.00%
... skip ...

# psparse -o d-cpu -D -p 428,6947,7111 p.log 
# FIELD: D-CPU%: Delta CPU usage [CPU% from D-TIME+D-CHILDTIME]
    P-428   P-6947   P-7111
    0.68%    4.21%    0.34%
    0.95%    4.18%    0.26%
    0.00%    4.29%    0.27%
    2.01%    4.42%    0.27%
    0.00%    3.82%    0.27%
    0.99%    4.24%    0.28%
... skip ...

-D -p pids 옵션을 지정하면, 지정한 PID 프로세스를 구간 별로 찾아서 구간 사이에서 증가된 CPU 시간(TIME, CHILDTIME) 에 대해 D-CPU%을 계산한다.

특정 필드의 정보만 출력하고 싶으면, 다음의 표에 있는 컬럼명을 -o 옵션에 지정하면 된다.

컬럼 설명
SIZE 프로세스의 가상 메모리 크기
RSS 프로세스의 물리적 메모리 크기
HP+STK 프로세스의 HP+STK의 크기
NLWP 프로세스의 LWP(light-weight process) 개수의 합계
D-WCPU%, D-CPU% D-CPU% : Delta CPU 사용률: D-TIME과 D-CHILD 시간을 합하여 사용률 표시
D-WCPU% = D-CPU% * number of processors(CPU)
D-TIME 현재 프로세스가 사용한 CPU 사용시간;
출력 형식: second.nnnn
D-CHILD 구간 동안에 자식 프로세스 사용한 CPU 사용시간;
출력 형식: second.nnnn
DT-WCPU%, DT-CPU% DT-CPU% : Delta CPU 사용률: D-TIME 시간으로 사용률 표시
DT-WCPU% = DT-CPU% * number of processors(CPU)
DC-WCPU%, DC-CPU% DC-CPU% : Delta CPU 사용률: D-CHILD 시간으로 사용률 표시
DC-WCPU% = DC-CPU% * number of processors(CPU)

-v 옵션를 추가적으로 지정하면 선택된 명령어에 대한 정보를 다음의 형식으로 출력한다.

# COMMAND: <PID> <PPID> <ELAPSED> <COMMAND-LINE>

psparse -D -H [-q] [-R range] file
# psparse -D -H p.log
Date.time 0310.11:13:37 proc 183 lwp 1894 cpu 19.80% hp+stk 1848.M : D-ALL 75.4300 [ 20.95% ] (D-TIME 72.1300 D-CHILD 3.3000)
Date.time 0310.11:14:07 proc 183 lwp 1894 cpu 19.70% hp+stk 1849.M : D-ALL 82.0100 [ 22.78% ] (D-TIME 75.4900 D-CHILD 6.5200)
Date.time 0310.11:14:37 proc 183 lwp 1894 cpu 19.08% hp+stk 1849.M : D-ALL 82.0600 [ 22.79% ] (D-TIME 72.7500 D-CHILD 9.3100)
Date.time 0310.11:15:07 proc 183 lwp 1894 cpu 19.06% hp+stk 1849.M : D-ALL 85.6600 [ 23.79% ] (D-TIME 75.3500 D-CHILD 10.3100)
Date.time 0310.11:15:37 proc 190 lwp 1901 cpu 20.39% hp+stk 1850.M : D-ALL 84.0200 [ 23.34% ] (D-TIME 83.0700 D-CHILD 0.9500)

psparse -D -H p.log 명령어는 psparse -D p.log 명령어를 실행한 결과에서 헤더 정보만 출력하는 것과 같다.

  psparse -F [-h] file
-F 옵션을 사용하면, 헤더 정보와 프로세스를 조사하여 추가적인 정보를 보여준다.

# psparse -F p.log
        *Time  proc start end zomb run   lwp   load allcpu  ptime  maxwcpu   allhs  maxhs  maxsz maxrss     D-rss   D-allcpu(R)  D-maxwcpu(R)
0310.11:13:07   188     -   7    6   0  1899   3.36 21.08%      -   54.42%  1848.M 185.3M 1528.M 1239.M         -             -             -
0310.11:13:37   183     2   0    6   0  1894   2.96 19.80% 20.95%   50.35%  1848.M 185.3M 1528.M 1239.M    -3192K  20.95%(0.96)  50.50%(1.00)
0310.11:14:07   183     0   2    6   0  1894   3.13 19.70% 22.78%   49.66%  1849.M 185.3M 1528.M 1239.M     1872K  22.78%(0.92)  50.17%(1.00)
0310.11:14:37   183     2   0    6   0  1894   2.93 19.08% 22.79%   50.54%  1849.M 185.3M 1528.M 1239.M     1792K  22.79%(0.89)  51.50%(1.00)
0310.11:15:07   183     0   2    6   0  1894   2.80 19.06% 23.79%   51.97%  1849.M 185.3M 1528.M 1239.M     1184K  23.79%(0.88)  53.00%(1.00)
... skip ...

-F 옵션을 사용하면 다음의 정보를 보여준다.

컬럼 설명
Time 날짜 및 시간
proc 프로세스의 개수
start 해당 시간에 시작된 프로세스의 개수
end 해당 시간에 마지막으로 수집된 프로세스의 개수
zomb 좀비(zombie) 프로세스 개수
run Runnable한 프로세스의 개수
lwp 프로세스의 LWP(light-weight process) 개수의 합계
load 지난 1분간 run queue에서 대기한 1초당 쓰레드의 개수이다.
allcpu 전체의 프로세스의 CPU 사용률 합계
ptime 전체의 프로세스가 CPU를 사용한 누적시간의 합계(TIME+CHILDTIME)
(단위: second.nnnn (nnnn은 1/10000초)
maxwcpu 프로세스 중에서 WCPU%가 가장 큰 프로세스의 WCPU%
allhs 전체의 프로세스의 heap과 stack의 합계 (MB 단위)
maxhs 프로세스 중에서 HP+STK(heap과 Stack)가 가장 큰 것
maxsz 프로세스 중에서 SIZE가 가장 큰 것
maxrss 프로세스 중에서 RSS가 가장 큰 것
D-rss 모든 프로세스의 RSS값을 합하여 구간 별로 차이값을 Kilobyte 단위로 표시
D-allcpu(R) 구간 별로 모든 프로세스에 대해 CPU를 사용한 시간 차이(delta time of TIME and CHILDTIME)를 가지고 D-CPU%를 구하고, 그 합계를 표시한다.
이 값은 "psinfo -D psinfo.log" 명령어의 결과에 나오는 헤더 부분에 D-ALL 옆에 괄호 안에 있는 값과 같다.
Date.time ... hp+stk 462.0M : D-ALL 67.3800 [ 14.04% ] (D-TIME 32.0600 D-CHILD 35.3200)

D-CPU% 사용률은 현재 프로세스가 사용한 시간(TIME)과 자식 프로세스 사용한 시간(CHILDTIME) 으로 결정된다. 이때 그 비율을 괄호안에 표시한다. 현재 프로세스가 구간 동안 사용한 시간이 10초 이고 자식 프로세스가 사용한 시간이 0초 이면 그 비율은 1이 된다.
만일 현재 프로세스가 구간 동안 사용한 시간이 10초 이고 자식 프로세스가 사용한 시간이 5초 이면 그 비율은 0.66(10/15)이 된다. 자식 포렛

D-maxwcpu(R) 구간 별로 모든 프로세스에 대해 CPU를 사용한 시간 차이(delta time of TIME and CHILDTIME)를 가지고 D-WCPU%를 구하고, 그 중에서 D-WCPU% 값이 최대인 값을 표시한다.
이것을 파일로 저장한 후에 mkgraph 명령어로 그래프를 그리는데 사용된다.
위에서 allcpu 컬럼은 데이타를 수집하고 있는 시점에 수행되고 있는 프로세스의 CPU 사용률의 합계이고, psinfo 명령어를 실행하기 하기 전에 종료된 프로세스의 CPU 사용률은 알 수 없다.
psinfo 명령어는 모든 프로세스의 CPU 누적시간(TIME)과 자식 프로세스가 사용한 CPU 누적시간(CHILDTIME)을 합하여 1/10000 초 단위로 ptime 항목에 표시한다.
psparse -F 명령어는 이 값을 데이타를 수집한 시간 간격과 CPU 개수를 계산하여 구간 별로 프로세스들이 사용한 CPU 사용률을 계산하여 ptime에 기록한다.

프로세스가 종료될 때, 그 프로세스가 사용한 CPU 누적시간과 그 자식 프로세스가 사용한 CPU 누적시간을 그 부모 프로세스에게 돌려준다.
psinfo 명령어는 ptime에 매 시간 간격마다 프로세스에 있는 CPU 누적시간과 자식 프로세스가 사용한 CPU 누적시간을 합하여 기록해 두기 때문에, 구간 별 차이 값과 구간 별 시간 곱하기 CPU 개수에 대한 비율이 그 구간에서 프로세스가 사용한 실제 CPU 사용량이 된다.

예를 들어, CPU가 2개 있는 시스템에서 10초 간격으로 데이타를 수집했다면: 

	 first:	 ptime 1284.2300
	second:	 ptime 1294.4500

	        구간 차이 값:   second (1294.4500) - first (1284.2300) = 10.2200
	구간 별 최대 사용시간:  2 (two cpu) * 10 (10 second) = 20.0000

		프로세스 CPU 사용률:  10.2200 / 20.0000 * 100 = 51.10%

실제 ptime 컬럼에 사용률은 높은데, cpu 컬럼에 사용률이 낮다면, 데이타를
수집하는 구간에서 CPU를 많이 사용한 프로세스가 종료되었다는 것을 의미한다.
이와 같은 경우, 어떤 프로세스의 자식 프로세스가 CPU를 사용하는지 찾으려면
psparse에 -D 옵션을 사용하면 찾을 수 있다.

psinfo 명령어가 시스템 전체 lock을 걸고 모든 프로세스 정보를 수집하고 난 뒤에 lock을 푸는 것이 아니기 때문에, 다음과 같은 경우, 측정 오차가 발생할 수 있다.

1)   부모 프로세스 정보를 먼저 수집한 후에 그 자식 프로세스가 종료될 경우,
2)   자식 프로세스 정보를 수집한 후 그 부모 프로세스 정보를 수집하기 전에 자식 프로세스가 종료될 경우.

gpsinfo 명령어는 쉘 스크립트이며 psparse -F 명령어와 mkgraph 명령어를 사용하여 psinfo 명령어로 수집한 프로세스 정보에 대하여 그래프를 그려준다.

-h 옵션을 지정하면 HTML 형식으로 출력한다. 이 출력물에는 웹 상에서 psparse 명령어를 바로 실행할 수 있는 추가적인 정보가 들어 있다. -h 옵션은 mkrep.sh 명령어나 gpsinfo 명령어에 -S 옵션을 지정하면 내부적으로 이 옵션을 사용한다.

  psparse -g [!]strings [-E|-f] [-0][-k][-Z] [-R range] [filter_options] file
  psparse -G [!]cmd_names [-E|-f] [-0][-k][-Z] [-R range] [filter_options] file
-g 옵션은 명령어 라인(CMDLINE)에 지정한 문자열이 있는 프로세스를 찾아 그 정보를 보여준다.
문자열의 첫 글자에 ! (느낌표) 가 있으면, 그 문자열을 포함하지 않는 프로세스 정보만 보여준다.

# psparse -g ksh psinfo-A.log
  PID  PPID USERNAME   SIZE    RSS HP+STK S NLWP   WCPU%   CPU%  MEM%  ELAPSED          TIME CMDLINE
Date.time 0609.04:36:07 proc 68 zomb 0 run 0 lwp 141 cpu 2.47% load1m 0.19 ptime 2801.2083 hp+stk 42.84M
  424   407 guest    1.828M 1.180M 0.055M S    1   0.00%  0.00%  1.0%  0d23644       00.0512 /usr/bin/ksh
  429   408 guest    2.305M 1.453M 0.055M S    1   0.00%  0.00%  1.2%  0d23643       00.6233 /usr/bin/ksh
  426   408 guest    2.336M 1.523M 0.055M S    1   0.00%  0.00%  1.3%  0d23644       01.7319 /usr/bin/ksh
  432   408 guest    1.828M 1.227M 0.055M S    1   0.00%  0.00%  1.0%  0d23643       00.0923 /usr/bin/ksh
 5430   408 guest    1.828M 1.227M 0.055M S    1   0.00%  0.00%  1.0%  0d1           00.0911 grep ksh data.log
 ... skip ...

-G 옵션에 지정된 이름은 명령어 이름에서 마지막 파일명과 정확히 일치하는 명령어에 대해서만 처리한다. 그러나 -g 옵션을 지정하면, -g 옵션에 지정된 문자열을 포함하는 명령어에 대하여 처리한다.
-x 옵션을 지정하면, -g 또는 -G 옵션에서 지정한 문자열을 가지고 있지 않는 프로세스 정보를 보여준다.

여러 개의 명령어를 지정할 경우, 명령어를 콤마(,)로 분리하면 된다. 만일 선택하려고 하는 명령어에 콤마가 포함되어 있으면, 백슬래쉬(\)를 콤마 앞이 지정하면 된다.
-0 옵션을 함께 사용하면, 첫 컬럼에 프로세스 정보를 수집한 시간을 함께 보여준다.

  psparse -H [-k] [-R range] file
  psparse -H [-Z -o selfield] [-k] [-R range] [filter_options] file
-H 옵션을 사용하면 프로세스의 전체 정보만 보여준다

# psparse -H psinfo-A.log
    Date.time  proc zomb run  lwp    cpu load1m hp+stk         ptime           time      childtime     D-time    D-child
0608.22:42:42   105    1   0  325  0.28%   0.01 273.6M     3404.5899     45:13.6299     11:30.9600     0.0000     0.0000
0608.22:43:42   105    1   0  325  0.31%   0.02 273.6M     3405.4043     45:14.0943     11:31.3100     0.4644     0.3500
0608.22:44:42   104    1   0  324  0.26%   0.02 273.5M     3405.7531     45:14.4231     11:31.3300     0.3288     0.0200
0608.22:45:43   105    1   0  325  0.27%   0.01 273.6M     3406.1264     45:14.7964     11:31.3300     0.3733     0.0000
0608.22:46:43   107    1   0  326  0.29%   0.01 273.7M     3406.5324     45:15.2024     11:31.3300     0.4060     0.0000
0608.22:47:43   108    1   0  321  0.25%   0.01 273.7M     3406.8891     45:15.5591     11:31.3300     0.3567     0.0000
... skip ...

위에서 time는 전체 프로세스가 사용한 CPU 누적 사용량이고, childtime는 자식 프로세스들이 사용한 CPU 누적 사용량이다. 형식은 다음과 같다.

형식: [[[day-]HH:]MM:]SS.nnnn (nnnn은 1/10000초)

D-time과 D-child는 프로세스 CPU 누적 사용 시간과 자식 프로세스의 CPU 누적 사용시간의 차이 값을 각각 보여준다. 단위는 다음과 같다.

형식: second.nnnn (nnnn은 1/10000초) ptime은 time과 childtime의 합계이고 단위는 다음과 같다.

형식: second.nnnn (nnnn은 1/10000초)

-H 옵션에 -Z -o selfield 옵션을 지정하면, zone 별로 지정한 선택된 필드에 대한 정보를 보여 준다.
(-Z -o selfield 옵션을 지정할 때에는 filter_options 옵션을 함께 사용할 수 있다.)

# psparse -H -Z -o cpu -z global,web2root,dbp,cr2 psinfo-AZ.log
    DATE.TIME   global    was01    was02 webserv1
0727.22:38:52    0.19%    2.13%    0.03%    0.51%
0727.22:38:57    0.20%    0.00%    0.02%    0.51%
0727.22:39:02    0.31%    0.00%    0.03%    0.50%
0727.22:39:07    0.36%    0.00%    0.02%    0.50%
0727.22:39:12    0.59%    0.00%    0.02%    0.52%
0727.22:39:17    0.63%    0.00%    0.02%    0.51%
0727.22:39:22    0.63%    0.00%    0.02%    0.52%
0727.22:39:27    0.29%    0.00%    0.10%    0.52%
0727.22:39:32    0.31%    0.01%    0.11%    0.55%
0727.22:39:37    0.32%    0.01%    0.06%    0.57%
... skip ...

-o selfield 에 지정할 수 있는 것은 다음과 같다.

컬럼 설명
NPROC zone 에 있는 프로세스 개수
NLWP zone 에 있는 프로세스의 LWP(light-weight process) 개수의 합계
WCPU zone 에 있는 프로세스의 WCPU%의 합계
CPU zone 에 있는 프로세스의 CPU%의 합계
HP+STK zone 에 있는 프로세스의 HP+STK의 합계
MAX_SIZE zone 에 있는 프로세스 중에서 SIZE가 가장 큰 프로세스의 SIZE
MAX_RSS zone 에 있는 프로세스 중에서 RSS가 가장 큰 프로세스의 RSS
MAX_HS zone 에 있는 프로세스 중에서 HP+STK가 가장 큰 프로세스의 HP+STK
ZOMB zone 에 있는 좀비 프로세스의 개수
RUN zone 에 있는 runnable 프로세스의 개수

  psparse -I file
-I 옵션을 사용하면 수집한 데이타의 시간 간격을 조사하여 보여준다. 수집한 시간 간격이 다를 때 마다 그 정보를 보여준다.

# psparse -I psinfo-A.log
Date.time     Interval
0609.04:36:20  10

위의 내용은 06월 09일 04시 36분 20초에 10초 간격의 데이타가 있으며 (즉, 10초 전인 04:36:10부터 데이타가 측정되었다는 것을 의미) , 그 이후도 계속 10초 간격이다. 이 옵션은 데이타가 지정한 시간 간격으로 규칙적으로 수집되었는지 확인하는데 사용된다. psparse는 입력파일에서

Date.time mmdd.HHMMSS 으로 시작하는 라인을 찾아서 조사한다.

  psparse -O -R range [-z zone] file
  psparse -O -z zone file
  psparse -O -R time1,time2,... [-z zone] file
-O 옵션을 사용하면 지정한 시간의 데이타를 가공하지 않은 상태로 화면에 보여준다.

# psparse -O -R 09:00:00-11:59:59 psinfo-A.log > tmp.log
# psinfo -h tmp.log
... skip ...
# psinfo -X tmp.log
... skip ...
# psinfo -S tmp.log
... skip ...

# psparse -O -R 09:00:00,10:00:00,11:00:00,12:00:00,13:00:00,14:00:00,15:00:00,16:00:00,17:00:00,18:00:00 psinfo.log > ps-work_hour.log

만일 psinfo -A 명령어를 1분 간격으로 하루 종일 데이타를 수집하였을 경우, 특정 구간의 데이타에 대하여 가공할 경우 -R 옵션으로 구간을 지정할 수 있는데,
여러 번 가공할 경우에 특정 구간의 데이타를 위와 -O 옵션을 사용하여 데이타를 추출해 놓고 가공하는 것이 속도가 더 빠르다.

-O 옵션을 사용할 경우, -R 옵션에 콤마로 구분하여 여러 개의 시간을 지정할 수 있다.
이렇게 시간을 지정하면, 지정한 시간과 같거나 시간을 초과한 가장 근접한 시간의 데이타를 저장한다.
time의 형식은 mmdd.HH:MM:SS 또는 HH:MM:SS 이다. 두가지 형식을 섞어서 사용하면 안된다.

-z 옵션을 사용하여 zone 이름을 지정하면, 해당 존에 대한 프로세스 정보만 뽑아 낸다.

  psparse -M condition[,condition,...][-E|-f][-k][-Z] [-R range] [filter_options] file
-M 옵션은 지정한 조건을 만족하는 프로세스 정보를 보여준다. 다음은 CPU 사용률이 10% 이상인 프로세스 정보를 보여준다.

# psparse -M cpu=10 psinfo-A.log
    DATE.TIME   PID  PPID USERNAME   SIZE    RSS HP+STK S NLWP   WCPU%   CPU%  MEM%  ELAPSED          TIME CMDLINE
0609.04:36:22  2172  2171 guest    6.281M 5.359M 3.109M R    1  12.75% 12.75%  4.5%      0d3       02.8012 recv_data
0609.04:36:47  2240  2239 guest    6.742M 5.836M 3.570M R    1  13.76% 13.76%  4.9%      0d3       03.0410 send_data
0609.04:37:32  2292  2162 guest    15.65M 12.50M 3.414M R    4  18.88% 18.88% 10.5%     0d10       04.5611 TCPwait
0609.04:37:37  2292  2162 guest    16.36M 15.43M 4.125M R    4  33.75% 33.75% 13.0%     0d15       08.9338 TCPproc
 ... skip ...

-M condition 옵션은 프로세스를 조사하여 지정한 조건이 만족되는 프로세스 정보를 출력한다.

condition의 형식)

field=value[,field=value,...] 각 필드와 조건 및 단위는 아래에 열거되었고, 각각에 열거되는 조건은 OR 조건이다.
field value
size   >=     SIZE (MB 단위)
rss   >=     RSS (MB 단위)
hs   >=     HP+STK (MB 단위)
state   =     one of   S   O   R   Z   T
nlwp   >=     NLWP (number of LWP)
wcpu   >=     WCPU (%)
wcpu1   >=     WCPU (%) and NLWP == 1
(해당 프로세스의 쓰레드 개수가 1 개이고, WCPU 값이 지정한 값 이상인 프로세스)
cpu   >=     CPU (%)
mem   >=     MEM (%)
elapsed   <=     ELAPSED (second)
time   >=     TIME (second)
childtime   >=     CHILDTIME (second)

  psparse -p pids [-E|-f] [-L] [-0][-k][-Z] [-R range][-a | -N nth] [filter_options] file
  psparse -p pids -o selfield [-E|-f] [-L] [-0][-k][-Z] [-R range][-a | -N nth] [filter_options] file
  psparse -p pids -m [-L] [-0][-k][-Z] [-R range][-a | -N nth] [filter_options] file
  psparse -p pids -m -o selfield [-L] [-0][-k][-Z] [-R range][-a | -N nth] [filter_options] file

  psparse -P pid [-E|-f] [-0][-k][-Z] [-R range][-a | -N nth] [filter_options] file

-p pid 옵션에 프로세스 ID를 지정하면 지정한 프로세스 ID인 프로세스 정보를 보여준다.
파일에서 프로세스 ID를 찾을 경우에 최초 프로세스 ID를 찾은 후에 그 프로세스 ID가 측정되지 않은 시점이 있을 경우, 더 이상 데이타를 읽지 않고 종료한다.

# psparse -p 288 psinfo-A.log
  PID  PPID USERNAME   SIZE    RSS HP+STK S NLWP   WCPU%   CPU%  MEM%  ELAPSED          TIME    D-TIME CMDLINE
  288   283 guest    20.07M 17.63M 9.227M S    1   1.01%  1.01% 14.8%  0d23693    02:40.8812    0.0000 sData -p 5000
  288   283 guest    20.07M 17.63M 9.227M S    1   0.94%  0.94% 14.8%  0d23698    02:40.9220    0.0400 sData -p 5000
  288   283 guest    20.07M 17.63M 9.227M R    1   2.32%  2.32% 14.8%  0d23703    02:41.2007    0.3500 sData -p 5000
  288   283 guest    20.07M 17.63M 9.227M S    1   2.06%  2.06% 14.8%  0d23708    02:41.3321    0.0600 sData -p 5000
... skip ...
# psparse -p 288 -0 psinfo-A.log
    DATE.TIME  PID  PPID USERNAME   SIZE    RSS HP+STK S NLWP   WCPU%   CPU%  MEM%  ELAPSED          TIME    D-TIME CMDLINE
0609.04:36:07  288   283 guest    20.07M 17.63M 9.227M S    1   1.01%  1.01% 14.8%  0d23693    02:40.8812    0.0000 sData -p 5000
0609.04:36:12  288   283 guest    20.07M 17.63M 9.227M S    1   0.94%  0.94% 14.8%  0d23698    02:40.9220    0.0400 sData -p 5000
0609.04:36:17  288   283 guest    20.07M 17.63M 9.227M R    1   2.32%  2.32% 14.8%  0d23703    02:41.2007    0.3500 sData -p 5000
0609.04:36:22  288   283 guest    20.07M 17.63M 9.227M S    1   2.06%  2.06% 14.8%  0d23708    02:41.3321    0.0600 sData -p 5000
... skip ...

D-TIME은 구간 별로 CPU 누적시간의 차이 값을 나타낸다. D-CHILDTIME은 구간 별로 자식 프로세스 CPU 누적시간의 차이 값을 나타낸다.
D-CHILDTIME은 -E 옵션을 지정하면 출력된다.
-0 옵션을 지정하면, 다음과 같이 출력되는 각 라인 앞에 날짜와 시간 정보를 추가한다.

-m 옵션을 지정하면, 다음과 같이 프로세스의 메모리 변화에 대한 정보를 보여준다.

# psparse -p 288 psinfo-A.log
  PID  PPID USERNAME  D-MEM   SIZE D-SIZE    RSS  D-RSS HP+STK D-HP+STK  ELAPSED CMDLINE
  19218     1 oracle   0.000M 15521M 0.000M 15478M 0.000M 2.164M   0.000M      0d1 ora_p056_jun1
  19218     1 oracle   7.398M 15523M 2.680M 15486M 7.398M 2.281M   0.117M     0d61 ora_p056_jun1
  19218     1 oracle   1.312M 15525M 1.312M 15487M 1.266M 2.281M   0.000M    0d121 ora_p056_jun1
  19218     1 oracle   1.438M 15526M 1.438M 15488M 1.438M 2.281M   0.000M    0d181 ora_p056_jun1
  19218     1 oracle   1.555M 15528M 1.500M 15490M 1.555M 2.281M   0.000M    0d241 ora_p056_jun1
  19218     1 oracle   22.40M 15550M 22.37M 15512M 22.40M 2.281M   0.000M    0d301 ora_p056_jun1
  19218     1 oracle   3.688M 15554M 3.688M 15516M 3.688M 2.281M   0.000M    0d361 ora_p056_jun1
  19218     1 oracle   3.734M 15556M 2.758M 15520M 3.734M 4.844M   2.562M    0d421 ora_p056_jun1
  19218     1 oracle   30.65M 15526M -30.6M 15489M -30.6M 4.875M   0.031M    0d481 ora_p056_jun1
  19218     1 oracle   0.000M 15526M 0.000M 15489M 0.000M 4.875M   0.000M    0d541 ora_p056_jun1
... skip ...

D-SIZE, D-RSS, D-HP+STK는 각각 SIZE, RSS, HP+STK 메모리 크기의 변화값을 나타내고, D-MEM 은 각 메모리의 변화값 중에서 큰 것의 절대값을 나타낸다.

-P pid 옵션에 프로세스 ID를 지정하면 부모 프로세스가 지정한 프로세스 ID인 프로세스 정보를 보여준다. 파일에서 프로세스 ID를 찾을 경우에 최초 프로세스 ID를 찾은 후에 그 프로세스 ID가 측정되지 않은 시점이 있을 경우 더 이상 데이타를 읽지 않고 종료한다.

# psparse -P 151 psinfo-A.log
  PID  PPID USERNAME   SIZE    RSS HP+STK S NLWP   WCPU%   CPU%  MEM%  ELAPSED          TIME CMDLINE
Date.time 0609.04:36:07 proc 68 zomb 0 run 0 lwp 141 cpu 2.47% load1m 0.19 ptime 2801.2021 hp+stk 42.84M
  382   151 root     3.344M 1.734M 0.445M S    1   0.00%  0.00%  1.5%  0d23662       00.1902 rpc.ttdbserverd
  421   151 root     1.688M 1.047M 0.172M S    1   0.00%  0.00%  0.9%  0d23644       00.2238 rpc.rstatd

Date.time 0609.04:36:12 proc 68 zomb 0 run 0 lwp 141 cpu 2.45% load1m 0.18 ptime 2803.2024 hp+stk 42.84M
  382   151 root     3.344M 1.734M 0.445M S    1   0.00%  0.00%  1.5%  0d23667       00.1902 rpc.ttdbserverd
  421   151 root     1.688M 1.047M 0.172M S    1   0.00%  0.00%  0.9%  0d23649       00.2238 rpc.rstatd
... skip ...

-p 나 -P 옵션에서 지정한 프로세스 ID가 한번 발견되고 그후로 그 프로세스 ID가 발견되지 않은 시점에는 더이상 파일을 조사하지 않고 끝낸다.
-a 옵션을 지정하면 파일의 끝까지 읽어서 프로세스 ID를 조사한다.
-p 옵션에 여러 개의 PID 지정하면, 내부적으로 -a 옵션을 지정한 것과 같이 동작한다.

-p 옵션에 -L 옵션을 사용하면 프로세스를 발견하지 않은 시점에 dummy 라인을 추가한다.
만일 어떤 프로세스가 언제 실행하여 언제 끝나는지를 그래프를 그릴려고 할 때 매우 유용한다.

09시 00분 00초 부터 60초 간격으로 10시간 "psinfo -A 60 600" 명령어를 실행하였다고 가정하자. 그 결과 파일에서 PID가 2389인 프로세스가 언제 실행하여 언제 끝나는지를 그래프로 알아 보고 싶다면 다음과 같이 할 수 있다.

# psinfo -A 60 600 > psinfo-A.log
# psparse -p 2389 -L psinfo-A.log > p2389.out
# mkgraph -H -o pid2389 -G "PID::PID 2389 dataserver" -t 09:00:00 -i 60 p2389.out

pid.2389.gif

위의 mkgraph 명령어는 pid2389.gif의 GIF 파일을 만든다. 이 그래프 상에서 PID 2389는 10:35:00 쯤에 실행되어 15:13:00 쯤에 끝났음을 알 수 있다. 이 프로세스가 실행된 동안에 시스템 상태가 어떻게 변했는지 시스템 통계 그래프와 비교하여 쉽게 알 수 있다.
그런데 여기서 -L 옵션을 사용하지 않으면 그래프의 시작이 09:00:00 부터 된다.

  psparse -u [!]username [-E|-f] [-0][-k][-Z] [-R range] [filter_options] file
-u usernames 옵션에 사용자명을 지정하면, 프로세스 중에 사용자가 지정한 이름을 가진 프로세스 정보만 모두 보여준다. 이때 정렬순서은 없다.
사용자명의 첫 글자에 ! (느낌표) 가 있으면, 그 사용자를 제외한 프로세스 정보만 보여준다.

# psparse -u root psinfo-A.log
Date.time 0310.11:13:07 proc 188 zomb 6 run 0 lwp 1899 cpu 21.08% load1m 3.36 ptime 4267902.76 hp+stk 1848.M
  PID  PPID USERNAME   SIZE    RSS HP+STK S NLWP   WCPU%   CPU%  MEM%  ELAPSED          TIME CMDLINE
    0     0 root     0.000M 0.000M 0.016M T    1   0.00%  0.00%  0.0% 18d36216       25.8900 sched
    1     0 root     0.836M 0.453M 0.156M S    1   0.04%  0.00%  0.0% 18d36213    14:09.3000 /etc/init -
    2     0 root     0.000M 0.000M 0.016M S    1   0.00%  0.00%  0.0% 18d36213       00.0000 pageout
    3     0 root     0.000M 0.000M 0.016M S    1   4.83%  0.40%  0.0% 18d36213 23:44:24.4300 fsflush
 1133     1 root     1.812M 1.203M 0.117M S    1   0.00%  0.00%  0.0% 18d36080       00.0600 /usr/lib/saf/sac -t 300
   21     1 root     2.859M 1.094M 0.531M S    3   0.00%  0.00%  0.0% 18d36209       01.9200 vxconfigd -m boot
... skip ...

  psparse -S [-c|-h|-n|-e|-l|-T|-C] [{-t n | -a}] [-L][-0][-k] [-R range] [filter_options] file
  psparse -S -N names [-L][-0][-k] [-R range] [filter_options] file
  psparse -S -N names -o selfield [-L][-0][-k] [-R range] [filter_options] file
  psparse -S -g strings [-L][-0][-k] [-R range] [filter_options] file
  psparse -S -g strings -o selfield [-L][-0][-k] [-R range] [filter_options] file
  psparse -S -Z [-c|-h|-n|-e|-l|-T|-C] [{-t n | -a}] [-L][-0][-k] [-R range] [filter_options] file
  psparse -S -Z -N names [-L][-0][-k] [-R range] [filter_options] file
  psparse -S -Z -N names -o selfield [-L][-0][-k] [-R range] [filter_options] file

-S 옵션은 같은 이름을 가진 프로세스 별로 그룹핑하여 프로세스 정보를 보여준다.
명령어 이름은 각 명령어에서 명령어 패스를 제외한 부분이 같은 것끼리 그룹핑한다.

# psparse -S p.log
te.time 0310.11:13:07 proc 188 zomb 6 run 0 lwp 1899 cpu 21.08% load1m 3.36 ptime 4267902.76 hp+stk 1848.M
         COMMAND NPROC  NLWP    WCPU%    CPU%   HP+STK MAX_SIZE  MAX_RSS   MAX_HS  ELAPSED          TIME     CHILDTIME
            java    11  1177  215.04%  17.92%   826.3M   1621.M   860.2M   185.3M  0d23352 11-06:11:02.9600       00.9000
        ns-httpd    16   268   21.21%   1.76%   741.6M   179.6M   174.8M   165.9M  0d22837 01:33:49.5500       00.9500
           gated     4    82    8.24%   0.69%   168.6M   103.9M   84.53M   66.57M 18d31609 20:48:14.2700       00.0000
         fsflush     1     1    4.83%   0.40%   0.016M   0.000M   0.000M   0.016M 18d36213 23:44:24.4300       00.0000
            -ksh     5     5    0.44%   0.04%   0.273M   1.961M   1.523M   0.055M     0d88    01:00.9300    13:38.1600
           xxzl0     2    22    0.44%   0.04%   0.523M   57.93M   19.18M   0.266M 18d36089 05:08:20.8000       00.0000
  getdata_psinfo     1     1    0.37%   0.03%   0.211M   1.391M   1.078M   0.211M      0d0       00.0800       00.0000
          tqrtap     1     1    0.37%   0.03%   0.383M   1.438M   0.719M   0.383M  6d39967    16:11.4100       00.0000
              sh     9     9    0.33%   0.03%   0.703M   1.164M   0.898M   0.297M      0d7       00.4600       04.3800
 getdata_netstat     1     1    0.26%   0.02%   0.539M   2.266M   1.703M   0.539M      0d0       00.0600       00.0000
            nscd     1    14    0.22%   0.02%   0.812M   3.625M   3.133M   0.812M 18d36120    37:06.8000       00.0000
         xxhasmx     1     4    0.15%   0.01%   0.125M   16.81M   2.555M   0.125M 18d36102 01:07:36.3700       00.0000
         xxpcsea     1     4    0.15%   0.01%   0.203M   19.14M   3.844M   0.203M 18d36097 01:38:44.8000       00.0000
        mteagent     1     3    0.15%   0.01%   0.570M   6.945M   4.016M   0.570M 18d36086 01:46:33.5300 01:25:33.2800
          aqwarp     1     1    0.15%   0.01%   1.211M   4.469M   3.773M   1.211M  16d7980    16:26.5400    23:58.7400
         mibiisa     1    12    0.15%   0.01%   10.34M   12.59M   12.18M   10.34M 18d36081 01:14:19.1300       00.0000
           bqbnp     1     1    0.11%   0.01%   1.289M   4.594M   3.812M   1.289M  16d7985    11:58.5500       00.0000
          vmstat     1     1    0.07%   0.01%   0.172M   1.125M   0.945M   0.172M      0d3       00.0200       00.0000
  getdata_iostat     1     1    0.07%   0.01%   0.172M   1.289M   1.070M   0.172M      0d0       00.0200       00.0000
  getdata_vmstat     1     1    0.07%   0.01%   0.172M   1.125M   0.945M   0.172M      0d0       00.0200       00.0000

Date.time 0310.11:13:37 proc 183 zomb 6 run 0 lwp 1894 cpu 19.80% load1m 2.96 ptime 4267978.19 hp+stk 1848.M
         COMMAND NPROC  NLWP    WCPU%    CPU%   HP+STK MAX_SIZE  MAX_RSS   MAX_HS  ELAPSED          TIME     CHILDTIME
            java    11  1177  199.55%  16.63%   826.3M   1621.M   860.2M   185.3M  0d23382 11-06:12:02.3000       00.9000
        ns-httpd    16   268   22.61%   1.89%   741.9M   179.7M   175.0M   166.0M  0d22867 01:33:56.8600       00.9500
          xgated     4    82    8.16%   0.68%   168.7M   103.9M   84.53M   66.57M 18d31639 20:48:16.9600       00.0000
 ... skip ...

# psparse -S -N ns-httpd p.log
         COMMAND NPROC  NLWP    WCPU%    CPU%   HP+STK MAX_SIZE  MAX_RSS   MAX_HS  ELAPSED          TIME     CHILDTIME
        ns-httpd    16   268   21.21%   1.76%   741.6M   179.6M   174.8M   165.9M  0d22837 01:33:49.5500       00.9500
        ns-httpd    16   268   22.61%   1.89%   741.9M   179.7M   175.0M   166.0M  0d22867 01:33:56.8600       00.9500
        ns-httpd    16   268   21.82%   1.82%   742.2M   180.1M   175.3M   166.4M  0d22897 01:34:03.9900       00.9500
        ns-httpd    16   268   20.26%   1.69%   742.2M   180.1M   175.3M   166.4M  0d22927 01:34:10.4400       00.9500
        ns-httpd    16   268   22.37%   1.86%   742.4M   180.1M   175.3M   166.4M  0d22957 01:34:17.9200       00.9500
        ns-httpd    16   268   19.82%   1.65%   742.6M   180.1M   175.3M   166.4M  0d22987 01:34:24.2500       00.9500
... skip ...

# psparse -S -N vmstat -0 -L p.log
    DATE.TIME          COMMAND NPROC  NLWP    WCPU%    CPU%   HP+STK MAX_SIZE  MAX_RSS   MAX_HS  ELAPSED          TIME     CHILDTIME
0310.11:13:07           vmstat     1     1    0.07%   0.01%   0.172M   1.125M   0.945M   0.172M      0d3       00.0200       00.0000
0310.11:13:37           vmstat     0     0    0.00%   0.00%   0.000M   0.000M   0.000M   0.000M        -       00.0000       00.0000
0310.11:14:07           vmstat     0     0    0.00%   0.00%   0.000M   0.000M   0.000M   0.000M        -       00.0000       00.0000
0310.11:14:37           vmstat     0     0    0.00%   0.00%   0.000M   0.000M   0.000M   0.000M        -       00.0000       00.0000
0310.11:15:07           vmstat     0     0    0.00%   0.00%   0.000M   0.000M   0.000M   0.000M        -       00.0000       00.0000
0310.11:15:37           vmstat     1     1    0.07%   0.01%   0.172M   1.125M   0.945M   0.172M      0d1       00.0200       00.0000
0310.11:16:07           vmstat     0     0    0.00%   0.00%   0.000M   0.000M   0.000M   0.000M        -       00.0000       00.0000
... skip ...

# psparse -S -N ns-httpd,gated,ksh p.log
Date.time 0310.11:13:07 proc 188 zomb 6 run 0 lwp 1899 cpu 21.08% load1m 3.36 ptime 4267902.76 hp+stk 1848.M
         COMMAND NPROC  NLWP    WCPU%    CPU%   HP+STK MAX_SIZE  MAX_RSS   MAX_HS  ELAPSED          TIME     CHILDTIME
        ns-httpd    16   268   21.21%   1.76%   741.6M   179.6M   174.8M   165.9M  0d22837 01:33:49.5500       00.9500
           gated     4    82    8.24%   0.69%   168.6M   103.9M   84.53M   66.57M 18d31609 20:48:14.2700       00.0000
             ksh     4     4    0.00%   0.00%   0.211M   1.977M   1.383M   0.070M 18d36055    03:19.6900 01:56:40.6900

Date.time 0310.11:13:37 proc 183 zomb 6 run 0 lwp 1894 cpu 19.80% load1m 2.96 ptime 4267978.19 hp+stk 1848.M
         COMMAND NPROC  NLWP    WCPU%    CPU%   HP+STK MAX_SIZE  MAX_RSS   MAX_HS  ELAPSED          TIME     CHILDTIME
        ns-httpd    16   268   22.61%   1.89%   741.9M   179.7M   175.0M   166.0M  0d22867 01:33:56.8600       00.9500
           gated     4    82    8.16%   0.68%   168.7M   103.9M   84.53M   66.57M 18d31639 20:48:16.9600       00.0000
             ksh     4     4    0.00%   0.00%   0.211M   1.977M   1.383M   0.070M 18d36085    03:19.7100 01:56:40.9800
... skip ...

# psparse -S -N ns-httpd,gated,ksh -o cpu p.log
# FIELD: CPU%: CPU usage
 ns-httpd    gated      ksh
    1.76%    0.69%    0.00%
    1.89%    0.68%    0.00%
    1.82%    0.61%    0.00%
    1.69%    0.52%    0.00%
    1.86%    0.62%    0.00%
... skip ...

# psparse -S -N ns-httpd,gated,ksh -o HP+STK p.log
# FIELD: HP+STK: size of Heap + Stack
 ns-httpd   gated      ksh
   741.6M   168.6M   0.211M
   741.9M   168.7M   0.211M
   742.2M   168.7M   0.211M
   742.2M   168.7M   0.211M
   742.4M   168.7M   0.211M
... skip ...

# psparse -S -g "port 9010,/usr/sbin" p.log
Date.time 0310.11:13:07 proc 188 zomb 6 run 0 lwp 1899 cpu 21.08% load1m 3.36 ptime 4267902.76 hp+stk 1848.M
         COMMAND NPROC  NLWP    WCPU%    CPU%   HP+STK MAX_SIZE  MAX_RSS   MAX_HS  ELAPSED          TIME     CHILDTIME
       port.9010     2     6    0.00%   0.00%   0.047M   3.055M   1.516M   0.031M 18d36111       00.0500       00.0000
       /usr/sbin     9    41    0.22%   0.02%   3.383M   3.703M   3.133M   0.812M 18d36107    42:53.6700 33-19:52:08.1700

Date.time 0310.11:13:37 proc 183 zomb 6 run 0 lwp 1894 cpu 19.80% load1m 2.96 ptime 4267978.19 hp+stk 1848.M
         COMMAND NPROC  NLWP    WCPU%    CPU%   HP+STK MAX_SIZE  MAX_RSS   MAX_HS  ELAPSED          TIME     CHILDTIME
       port.9010     2     6    0.00%   0.00%   0.047M   3.055M   1.516M   0.031M 18d36141       00.0500       00.0000
       /usr/sbin     9    41    0.11%   0.01%   3.383M   3.703M   3.133M   0.812M 18d36137    42:53.7300 33-19:52:11.0100
... skip ...

# psparse -S -g "port 9010,/usr/sbin" -o cpu p.log
# FIELD: CPU%: CPU usage
 port.9010 /usr/sbin
    0.00%    0.02%
    0.00%    0.01%
    0.00%    0.02%
    0.00%    0.00%
... skip ...

-S 옵션에 -Z 옵션을 추가로 지정하면, zone 별로 프로세스 정보를 그룹핑하여, 다음과 같이 보여준다

# psparse -S -Z psinfo-AZ.log
Date.time 0727.22:38:52 proc 912 zomb 8 run 0 lwp 19306 cpu 0.96% load1m 3.79 ptime 268463.9857 hp+stk 12889M
            ZONE NPROC  NLWP    WCPU%    CPU%   HP+STK MAX_SIZE  MAX_RSS   MAX_HS  ELAPSED          TIME     CHILDTIME
           was00   173  5775   82.40%   0.51%   1889.M   1441.M   841.3M   80.06M    0d200 1-00:56:31.9945 01:06:24.3100
          global   117  3827   30.77%   0.19%   988.3M   429.9M   297.7M   283.8M      0d0 13:37:45.9821 09:16:23.8000
            xnet    58  1011   22.46%   0.14%   656.9M   4467.M   2274.M   175.0M     0d36 04:21:10.5326 01:52:50.1600
          was-gw    83  1236    6.84%   0.04%   1691.M   1152.M   404.1M   203.7M      0d1 02:01:32.9272    30:38.0900
            adbp   169   342    4.40%   0.03%   461.6M   16277M   16256M   51.16M      0d1 01:50:05.0602 07:18:11.4300
            app1    73  1011    3.41%   0.02%   2968.M   2348.M   732.7M   2343.M     0d47 01:50:12.1879 01:50:21.7400
        mailserv    54   546    1.95%   0.01%   361.2M   160.3M   145.5M   74.80M     0d61    26:18.4141    32:15.7400
        webserv0    95  1595    1.47%   0.00%   601.6M   174.9M   118.4M   67.89M     0d26 01:22:15.8483    27:40.6000
         mail101    17   416    0.49%   0.00%   110.3M   221.9M   185.8M   39.89M     0d87    24:45.8959       00.1100
         mail102     6     6    0.00%   0.00%   0.461M   2.391M   1.500M   0.117M    0d373       00.0585       00.0000
       ap-deamon     6    12    0.00%   0.00%   3.375M   5.297M   1.188M   1.070M  0d76671       00.6044       00.0000
         web2105    52  3449    0.00%   0.00%   2699.M   127.1M   109.3M   91.92M  0d75929    42:57.9202       00.0000
         ap2-mon     6    12    0.00%   0.00%   3.383M   5.297M   1.531M   1.078M  0d76670       00.7253       00.0000
         mail103     1    18    0.00%   0.00%   43.89M   174.2M   129.1M   43.89M  0d76662    01:51.6049       00.0000
         mail104     1    32    0.00%   0.00%   373.4M   2493.M   238.9M   373.4M  0d76295    02:15.3489       00.0000
       relayserv     1    18    0.00%   0.00%   35.89M   166.2M   119.1M   35.89M  0d76662    01:52.9007       00.0000
... skip ...

정렬 옵션을 지정하지 않으면, CPU%이 큰 순서로 정렬하여 상위 20개(-t 옵션으로 변경 가능)의 프로세스 정보를 보여준다.

만일 특정 프로세스에 대한 정보만 보고 싶다면, -N 옵션에 프로세스명을 지정하면, 지정한 프로세스 정보만 보여준다.
-Z 옵션을 지정할 때에는 -N 옵션에 zone 이름을 지정한다.

-N 옵션에 -L 옵션을 더 지정하면, 일치하는 명령어가 없는 구간에 대하여 다음과 같은 dummy 라인을 추가한다.

0310.11:13:37           vmstat     0     0    0.00%   0.00%   0.000M   0.000M   0.000M   0.000M        -       00.0000       00.0000

-L 옵션을 사용하여 결과를 만들면, 그 결과물로 그래프를 만드는데 유용하다. 예를 들어 사용자가 srvclient 라는 애플리케이션을 일정기간 동안 여러 개 실행하였고, 그 명령어들이 언제 몇개나 실행했는지 그래프로 그리고 싶다면, -L 옵션을 사용하여야 한다.

다음은 pspinfo -A 명령어로 09:00:00에 30초 간격으로 데이타를 수집한 psinfo-A.log 파일이 있다고 가정하여, srvclient 명령어가 언제, 몇개나 실행되었는지 알고 싶다면 다음과 같이 할 수 있다.

# psparse -S -N srvclient -L psinfo-A.log > p.log
# mkgraph -A -t 09:00:00 -i 30 -H -G "NPROC::number of process : srvclient" -o output p.log
output.gif

위의 mkgraph 명령어는 output.gif GIF 파일을 만든다. 이 그래프에서 srvclient 프로세스가 언제 몇개 실행되고 있는지 그래프를 보면 한 눈에 알 수 있다.

-S 옵션과 -U 옵션에서 정렬 옵션을 지정하지 않으면 CPU를 많이 사용하는 순서로 상위 20개의 정보를 보여준다. 정렬옵션은 다음의 것이 있다.

-c, -h, -n, -e, -l, -T, -C 각각은 [표 1]에서 설명되어 있다.

-o 옵션에 다음의 [표3]에 있는 인수를 지정하면, 지정한 인수 정보만 출력한다.
(ELASPSED 는 지정할 수 없다)

명령어 이름 자체에 콤마가 있다면, 다음과 같이 백슬래쉬를 콤마 앞에 붙여 명령어 이름의 일부라는 것을 지정할 수 있다.

-N "cron,port\,bc" 위의 내용은 cron 명령어와 port,bc 명령어에 대한 정보만 출력한다.

[표 3]
컬럼 설명
NPROC 프로세스 개수
NLWP 프로세스의 LWP(light-weight process) 개수의 합계
WCPU%, CPU% CPU% : Delta CPU 사용률: D-TIME과 D-CHILD 시간을 합하여 사용률 표시
WCPU% = CPU% * number of processors(CPU)
HP+STK 프로세스의 HP+STK의 합계
MAX_SIZE 프로세스 중에서 SIZE가 가장 큰 프로세스의 SIZE
MAX_RSS 프로세스 중에서 RSS가 가장 큰 프로세스의 RSS
MAX_HS 프로세스 중에서 HP+STK가 가장 큰 프로세스의 HP+STK
ELAPSED 최근에 실행된 프로세스의 ELAPSED
TIME 현재 프로세스가 사용한 CPU 사용 누적 시간의 합계
CHILDTIME 자식 프로세스가 사용한 CPU 사용 누적 시간의 합계

-S -g strings 옵션을 지정하면, 명령어 라인에 -g 옵션에서 지정한 문자열을 포함하는 명령어를 그룹핑하여 계산한다.
지정한 문자열에 공백이 있으면, 출력할에는 컬럼을 맞추기 위해 공백을 '.' 으로 대치하여 표시한다.

  psparse -U [-c|-h|-n|-e|-l|-T|-C] [{-t n | -a}] [-L][-0][-k] [-R range] [filter_options] [filter_options] file
  psparse -U -N names [-L][-0][-k] [-R range] [filter_options] [filter_options] file
  psparse -U -N names -o selfield [-L][-0][-k] [-R range] [filter_options] [filter_options] file
-U 옵션은 사용자 별로 그룹핑하여 프로세스 정보를 보여준다.

# psparse -U p.log
Date.time 0310.11:13:07 proc 188 zomb 6 run 0 lwp 1899 cpu 21.08% load1m 3.36 ptime 4267902.76 hp+stk 1848.M
        USERNAME NPROC  NLWP    WCPU%    CPU%   HP+STK MAX_SIZE  MAX_RSS   MAX_HS  ELAPSED          TIME     CHILDTIME
          xxuser    39  1437  232.59%  19.37%   1482.M   1621.M   860.2M   185.3M    0d167 11-07:33:43.9300       03.9200
            root   122   356   19.09%   1.60%   360.1M   170.8M   141.3M   127.7M      0d0 2-00:45:37.7800 35-13:08:55.9700
             k10    16    91    0.93%   0.07%   3.234M   57.93M   19.18M   0.570M 18d19883 10:22:31.3900 01:25:41.1400
           guest     1     1    0.44%   0.04%   0.055M   1.961M   1.523M   0.055M  0d14856    01:00.4500    13:35.5600
          nobody     5     4    0.00%   0.00%   1.211M   3.016M   2.250M   0.586M 18d36111       03.7600       10.1700
          daemon     1     3    0.00%   0.00%   0.781M   3.047M   1.914M   0.781M 18d36123       00.0800       00.0000

Date.time 0310.11:13:37 proc 183 zomb 6 run 0 lwp 1894 cpu 19.80% load1m 2.96 ptime 4267978.19 hp+stk 1848.M
        USERNAME NPROC  NLWP    WCPU%    CPU%   HP+STK MAX_SIZE  MAX_RSS   MAX_HS  ELAPSED          TIME     CHILDTIME
          xxuser    39  1437  218.42%  18.21%   1483.M   1621.M   860.2M   185.3M    0d197 11-07:34:49.4600       03.9200
            root   117   351   17.66%   1.46%   360.0M   170.8M   141.3M   127.7M      0d2 2-00:45:43.5000 35-13:08:58.9700
             k10    16    91    1.37%   0.11%   3.234M   57.93M   19.18M   0.570M 18d19913 10:22:32.1000 01:25:41.2600
... skip ...

# psparse -U -N root p.log
        USERNAME NPROC  NLWP    WCPU%    CPU%   HP+STK MAX_SIZE  MAX_RSS   MAX_HS  ELAPSED          TIME     CHILDTIME
            root   122   356   19.09%   1.60%   360.1M   170.8M   141.3M   127.7M      0d0 2-00:45:37.7800 35-13:08:55.9700
            root   117   351   17.66%   1.46%   360.0M   170.8M   141.3M   127.7M      0d2 2-00:45:43.5000 35-13:08:58.9700
            root   117   351   17.73%   1.49%   360.0M   170.8M   141.3M   127.7M     0d32 2-00:45:49.1900 35-13:09:02.4900
            root   117   351   15.54%   1.29%   360.0M   170.8M   141.3M   127.7M      0d1 2-00:45:54.2400 35-13:09:11.4100
            root   117   351   17.70%   1.49%   360.0M   170.8M   141.3M   127.7M     0d31 2-00:45:59.9700 35-13:09:18.7900
... skip ... 

# psparse -U -N root -0 p.log
    DATE.TIME         USERNAME NPROC  NLWP    WCPU%    CPU%   HP+STK MAX_SIZE  MAX_RSS   MAX_HS  ELAPSED          TIME     CHILDTIME
0310.11:13:07             root   122   356   19.09%   1.60%   360.1M   170.8M   141.3M   127.7M      0d0 2-00:45:37.7800 35-13:08:55.9700
0310.11:13:37             root   117   351   17.66%   1.46%   360.0M   170.8M   141.3M   127.7M      0d2 2-00:45:43.5000 35-13:08:58.9700
0310.11:14:07             root   117   351   17.73%   1.49%   360.0M   170.8M   141.3M   127.7M     0d32 2-00:45:49.1900 35-13:09:02.4900
0310.11:14:37             root   117   351   15.54%   1.29%   360.0M   170.8M   141.3M   127.7M      0d1 2-00:45:54.2400 35-13:09:11.4100
0310.11:15:07             root   117   351   17.70%   1.49%   360.0M   170.8M   141.3M   127.7M     0d31 2-00:45:59.9700 35-13:09:18.7900
... skip ... 

# psparse -U -N root,xxuser p.log
Date.time 0310.11:13:07 proc 188 zomb 6 run 0 lwp 1899 cpu 21.08% load1m 3.36 ptime 4267902.76 hp+stk 1848.M
        USERNAME NPROC  NLWP    WCPU%    CPU%   HP+STK MAX_SIZE  MAX_RSS   MAX_HS  ELAPSED          TIME     CHILDTIME
            root   122   356   19.09%   1.60%   360.1M   170.8M   141.3M   127.7M      0d0 2-00:45:37.7800 35-13:08:55.9700
          xxuser    39  1437  232.59%  19.37%   1482.M   1621.M   860.2M   185.3M    0d167 11-07:33:43.9300       03.9200

Date.time 0310.11:13:37 proc 183 zomb 6 run 0 lwp 1894 cpu 19.80% load1m 2.96 ptime 4267978.19 hp+stk 1848.M
        USERNAME NPROC  NLWP    WCPU%    CPU%   HP+STK MAX_SIZE  MAX_RSS   MAX_HS  ELAPSED          TIME     CHILDTIME
            root   117   351   17.66%   1.46%   360.0M   170.8M   141.3M   127.7M      0d2 2-00:45:43.5000 35-13:08:58.9700
          xxuser    39  1437  218.42%  18.21%   1483.M   1621.M   860.2M   185.3M    0d197 11-07:34:49.4600       03.9200
... skip ... 

# psparse -U -N root,xxuser -o cpu -0 p.log
# FIELD: CPU%: CPU usage
   *DATE.TIME      root   xxuser
0310.11:13:07     1.60%   19.37%
0310.11:13:37     1.46%   18.21%
0310.11:14:07     1.49%   18.08%
0310.11:14:37     1.29%   17.62%
0310.11:15:07     1.49%   17.39%
0310.11:15:37     1.43%   18.81%
... skip ...

-U 옵션만 지정하면 CPU%이 큰 순서로 정렬하여 상위 20개(-t 옵션으로 변경 가능)의 사용자 정보를 보여준다.

만일 특정 사용자에 대한 정보만 보고 싶다면, -N 옵션에 사용자명을 지정하면, 지정한 사용자 정보만 보여준다.

-N 옵션에 -L 옵션을 더 지정하면, 일치하는 사용자가 없는 구간에 대하여 dummy 라인을 추가한다.

-o 옵션으로 [표3]에 있는 필드명을 지정하여 지정한 정보만 출력할 수 있다. (ELASPSED 제외).

  psparse -W [-r|-s|-h] [-w] [{-t n | -a | -Y memsize }] [-0][-k][-Z] [-R range] [filter_options] file
  psparse -W -T [-w] [-R range] [filter_options] file
-W 옵션을 사용하면, 구간 사이에 물리적 메모리(RSS) 양의 변화가 있는 프로세스 정보를 보여준다. (디폴트 정렬 옵션은 -r 이다 )
RSS의 변화량은 D-RSS에 나타나며, 변화량이 있는 프로세스중에 변화량의 절대값이 큰 순서 로 20개(-t 옵션을 사용하여 변경가능)를 출력한다.

# psparse -W psinfo.log
  PID     USER   SIZE    RSS HP+STK     D-SIZE      D-RSS   D-HP+STK TAG   WCPU%   CPU%  ELAPSED          TIME CMDLINE
Date.time 1012.09:01:00 proc 187 zomb 0 run 17 lwp 1837 cpu 84.28% load1m 8.22 ptime 108707.6788 hp+stk 695.8M
28283   oracle 15547M 15511M 4.812M     16896K     16904K         0K (=)  24.66%  3.08%   0d1946       49.0283 ora_p046_USER
26251   oracle 15548M 15511M 4.852M     16768K     16776K         0K (=)  23.10%  2.89%   0d2015    01:37.4202 ora_p034_USER
28285   oracle 15546M 15510M 4.812M     16768K     16728K         0K (=)  23.36%  2.92%   0d1946       48.4218 ora_p047_USER
26253   oracle 15548M 15512M 4.844M     16576K     16576K         0K (=)  23.19%  2.90%   0d2015    01:35.8290 ora_p035_USER
26290   oracle 15547M 15510M 4.812M     16576K     16560K         0K (=)  24.51%  3.06%   0d2015       49.8104 ora_p037_USER
26288   oracle 15546M 15510M 4.812M     16384K     16408K         0K (=)  23.63%  2.95%   0d2015       49.1738 ora_p036_USER
22828   oracle 15547M 15510M 4.836M     16384K     16384K         0K (=)  22.09%  2.76%   0d2127    01:47.7224 ora_p028_USER
28205   oracle 15546M 15510M 4.844M     16256K     16264K         0K (=)  21.92%  2.74%   0d1949    01:42.2336 ora_p040_USER
26292   oracle 15547M 15511M 4.812M     15872K     15872K         0K (=)  21.12%  2.64%   0d2015       50.0844 ora_p038_USER
23619   oracle 15542M 15505M 2.219M     15680K     15680K         0K (=)  21.90%  2.74%     0d81       18.3733 ora_p029_USER
... skip ...

# psparse -W -w psinfo.log
  PID     USER   SIZE    RSS HP+STK     D-SIZE      D-RSS   D-HP+STK TAG   WCPU%   CPU%  ELAPSED        TIME CMDLINE
Date.time 1012.09:01:00 proc 187 zomb 0 run 17 lwp 1837 cpu 84.28% load1m 8.22 ptime 108707.6788 hp+stk 695.8M
24555   oracle 15527M 15491M 4.898M  15900576K  15863368K      5016K (S)   0.46%  0.06%     0d44       00.7100 ora_m000_USER
24123   oracle 15521M 15484M 2.242M -15894136K -15855696K     -2296K (E)   0.46%  0.06%      0d1       00.1101 ora_j001_USER
24868   oracle 15521M 15483M 2.211M  15893784K  15854968K      2264K (S)   0.10%  0.01%     0d31       00.0909 ora_pz99_USER
24151   oracle 15521M 15483M 2.141M -15893712K -15854808K     -2192K (E)   0.34%  0.04%      0d1       00.0802 ora_j005_USER
24127   oracle 15521M 15483M 2.141M -15893712K -15854808K     -2192K (E)   0.34%  0.04%      0d1       00.0799 ora_j003_USER
24125   oracle 15521M 15483M 2.141M -15893712K -15854808K     -2192K (E)   0.32%  0.04%      0d1       00.0702 ora_j002_USER
24143   oracle 15521M 15483M 2.141M -15893712K -15854808K     -2192K (E)   0.34%  0.04%      0d1       00.0734 ora_j004_USER
28283   oracle 15547M 15511M 4.812M     16896K     16904K         0K (=)  24.66%  3.08%   0d1946       49.0283 ora_p046_USER
26251   oracle 15548M 15511M 4.852M     16768K     16776K         0K (=)  23.10%  2.89%   0d2015    01:37.4202 ora_p034_USER
28285   oracle 15546M 15510M 4.812M     16768K     16728K         0K (=)  23.36%  2.92%   0d1946       48.4218 ora_p047_USER
... skip ...

# psparse -Y 16m -W psinfo.log
  PID     USER   SIZE    RSS HP+STK     D-SIZE      D-RSS   D-HP+STK TAG   WCPU%   CPU%  ELAPSED          TIME CMDLINE
Date.time 1012.09:01:00 proc 187 zomb 0 run 17 lwp 1837 cpu 84.28% load1m 8.22 ptime 108707.6788 hp+stk 695.8M
28283   oracle 15547M 15511M 4.812M     16896K     16904K         0K (=)  24.66%  3.08%   0d1946       49.0283 ora_p046_USER
26251   oracle 15548M 15511M 4.852M     16768K     16776K         0K (=)  23.10%  2.89%   0d2015    01:37.4202 ora_p034_USER
28285   oracle 15546M 15510M 4.812M     16768K     16728K         0K (=)  23.36%  2.92%   0d1946       48.4218 ora_p047_USER
26253   oracle 15548M 15512M 4.844M     16576K     16576K         0K (=)  23.19%  2.90%   0d2015    01:35.8290 ora_p035_USER
26290   oracle 15547M 15510M 4.812M     16576K     16560K         0K (=)  24.51%  3.06%   0d2015       49.8104 ora_p037_USER
26288   oracle 15546M 15510M 4.812M     16384K     16408K         0K (=)  23.63%  2.95%   0d2015       49.1738 ora_p036_USER
22828   oracle 15547M 15510M 4.836M     16384K     16384K         0K (=)  22.09%  2.76%   0d2127    01:47.7424 ora_p028_USER

# psparse -W -T psinfo.log
    DATE.TIME    SIZE-ALL   SIZE=PLUS  SIZE=MINUS     RSS-ALL    RSS=PLUS   RSS=MINUS      HS-ALL     HS=PLUS    HS=MINUS
1012.09:01:00     381824K     381824K          0K     381648K     381656K          8K          0K          0K          0K
1012.09:02:00     480248K     483896K       3648K     480344K     483928K       3584K       2816K       2816K          0K
1012.09:03:00       1384K       1384K          0K       2104K       2104K          0K        360K        360K          0K
1012.09:04:00    -366728K      52984K     419712K    -344280K      73704K     417984K      52536K      52536K          0K
1012.09:05:00    -160880K       8144K     169024K    -157656K      11256K     168912K       7824K       7824K          0K
1012.09:06:00         16K         16K          0K         24K         24K          0K         16K         16K          0K
1012.09:07:00          8K          8K          0K          0K          8K          8K          8K          8K          0K
1012.09:08:00     -27136K          0K      27136K     -27040K          8K      27048K          0K          0K          0K
1012.09:09:00     -37120K          0K      37120K     -37104K          0K      37104K          0K          0K          0K
1012.09:10:00          0K          0K          0K          0K          0K          0K          0K          0K          0K
1012.09:11:00     -34176K          0K      34176K     -34104K          0K      34104K          0K          0K          0K
1012.09:12:00     -27128K          8K      27136K     -27032K          8K      27040K          0K          0K          0K
... skip ...
# psparse -w -W -T psinfo.log
    DATE.TIME    SIZE-ALL   SIZE=PLUS  SIZE=MINUS     RSS-ALL    RSS=PLUS   RSS=MINUS      HS-ALL     HS=PLUS    HS=MINUS
1012.09:01:00  -47294008K     381824K          0K  -47175912K     381656K          8K      -3808K          0K          0K
1012.09:02:00     485368K     483896K       3648K     484808K     483928K       3584K       2896K       2816K          0K
1012.09:03:00  -15895440K       1384K          0K  -15858072K       2104K          0K      -2152K        360K          0K
1012.09:04:00    -374400K      52984K     419712K    -351064K      73704K     417984K      49968K      52536K          0K
1012.09:05:00    -157016K       8144K     169024K    -154320K      11256K     168912K       7888K       7824K          0K
1012.09:06:00      -5056K         16K          0K      -4280K         24K          0K        -72K         16K          0K
1012.09:07:00       1216K          8K          0K        968K          8K          8K         32K          8K          0K
1012.09:08:00   15868536K          0K      27136K   15834984K          8K      27048K       2480K          0K          0K
1012.09:09:00  -15917416K          0K      37120K  -15880736K          0K      37104K        360K          0K          0K
1012.09:10:00      -5792K          0K          0K      -7624K          0K          0K      -2496K          0K          0K
1012.09:11:00   15851912K          0K      34176K   15817152K          0K      34104K       2136K          0K          0K
1012.09:12:00     -19624K          8K      27136K     -20512K          8K      27040K       2536K          0K          0K
... skip ...

-w 옵션을 지정하지 않으면 구간 사이에 살아있는 프로세스에 대한 물리적 메모리의 변화량을 위의 첫번째 예제처럼 보여주고,
-w 옵션을 지정하면 구간 사이에 종료되거나 시작한 프로세스의 물리적 메모리 변화량도 함께 위의 두번째 예제처럼 보여준다.
TAG 컬럼에는 (E), (S), (=) 중에 하나가 표시된다. 그 의미는 다음과 같다.

(E)    표시된 시간에 마지막으로 수집된 프로세스
(S)    표시된 시간에 시작된 프로세스
(=)    구간 사이에 살아 있는 프로세스 (-w 옵션을 지정하지 않으면, 이 프로세스 정보만 보여준다.)

-s 옵션을 지정하면 RSS 값이 아닌 가상메모리(SIZE)의 변화량이 큰 순으로 프로세스 정보를 보여준다.
-h 옵션을 지정하면 HP+STK의 변화량이 큰 순으로 프로세스 정보를 보여준다.

-Y memsize 옵션을 지정하면 지정한 크기 이상 변화가 있는 모든 프로세스 정보를 보여준다.
memsize 숫자 끝에 단위[k(Kilo), m(Mega), g(Giga)]를 지정할 수 있다(디폴트는 kilo이다).
-a 옵션을 지정하면 변화량이 있는 모든 프로세스 정보를 보여준다.
-a 와 -Y 옵션을 지정하지 않으면 상위 20개의 프로세스 정보만 보여준다. 이 개수는 -t 옵션으로 변경할 수 있다.

-T 옵션을 지정하면 구간 별로 수집한 프로세스의 개별 정보가 아닌 전체정보를 표시한다.
출력되는 필드의 의미는 다음과 같다.

컬럼 설명
SIZE-ALL 가상 메모리의 총 증감량

-w 옵션을 지정하지 않으면 두 구간 동안 살아 있는 프로세스의 메모리 증감을 합산하여 보여주고, -w 옵션을 지정하면, 새로 시작한 프로세스와 종료된 프로세스의 메모리 증감도 합산하여 보여준다. (RSS-ALL, HS-ALL 도 마찬가지이다)

SIZE=PLUS 두 구간 동안 살아있는 프로세스 중에 가상 메모리가 늘어난 총 양
SIZE=MINUS 두 구간 동안 살아있는 프로세스 중에 가상 메모리가 줄어든 총 양
RSS-ALL 물리적 메모리의 총 증감량
RSS=PLUS 두 구간 동안 살아있는 프로세스 중에 물리적 메모리가 늘어난 총 양
RSS=MINUS 두 구간 동안 살아있는 프로세스 중에 물리적 메모리가 줄어든 총 양
HS-ALL HP+STK의 총 증감량
HS=PLUS 두 구간 동안 살아있는 프로세스 중에 HP+STK가 늘어난 총 양
HS=MINUS 두 구간 동안 살아있는 프로세스 중에 HP+STK가 줄어든 총 양

-W 옵션은 두개의 구간 별로 메모리 변화량을 조사한다. 예를 들어, 시간이 0609.04:01:00 이라면, 이 시간 이전의 시간 간격(여기서 60 초 간격) 부터 표시된 시간까지 값이다.

0609.04:00:00 0609.04:01:00 0609.04:02:00 | | | |<------------->| | | | | | |<------------->| | | 0609.04:01:00 0609.04:02:00

  psparse -X [-c | -E] [-R range] file
  psparse -X -p pid [-c | -E] [-R range][-a] file

-X 옵션을 사용하면, 수집한 데이타에 대하여 프로세스 트리를 보여준다.

# psparse -X psinfo-A.log
Date.time 0609.04:36:07 proc 68 zomb 0 run 0 lwp 141 cpu 2.47% load1m 0.19 ptime 2801.2018 hp+stk 42.84M
PID : CMDLINE
157 : /usr/lib/autofs/automountd
191 : /usr/sbin/nscd
151 : /usr/sbin/inetd -s
  382 : rpc.ttdbserverd
  421 : rpc.rstatd
171 : /usr/sbin/cron
170 : /usr/sbin/syslogd
221 : /usr/lib/power/powerd
240 : /usr/sbin/vold
268 : /usr/lib/snmp/snmpdx -y -c /etc/snmp/conf
  287 : mibiisa -r -p 32792
233 : /opt/JSparm/bin/parmagent
235 : /opt/JSparm/bin/gwserv -Bc /etc/parmclient.conf
291 : /usr/openwin/bin/fbconsole -d :0
281 : /usr/lib/saf/ttymon -g -h -p king console login:  -T sun -d /dev/console -l con
274 : /usr/lib/dmi/dmispd
283 : /usr/dt/bin/dtlogin -daemon
  288 : /usr/openwin/bin/Xsun :0 -nobanner -auth /var/dt/A:0-BEayJa
  289 : /usr/dt/bin/dtlogin -daemon
    309 : /bin/ksh /usr/dt/bin/Xsession
      338 : /usr/openwin/bin/htt -nosm
        342 : htt_server -nosm -h -lc_basiclocale ko
        343 : htt_props -nosm -lc_basiclocale ko
      347 : /usr/java/bin/sparc/native_threads/java -classpath /usr/dt/appconfig/hotjava/cl
      319 : /usr/openwin/bin/fbconsole
      361 : /usr/dt/bin/sdt_shell -c  	    unset DT; 	    DISPLAY=:0;   	    /usr/dt/bin/dt
        363 : -ksh -c  	    unset DT; 	    DISPLAY=:0;   	    /usr/dt/bin/dtsession_res -merg
          381 : /usr/dt/bin/dtsession
... skip ...

# psparse -X -p 151 -R 1 psinfo-A.log
Date.time 0609.04:36:07 proc 68 zomb 0 run 0 lwp 141 cpu 2.47% load1m 0.19 ptime 2801.2018 hp+stk 42.84M
PID : CMDLINE
151 : /usr/sbin/inetd -s
  382 : rpc.ttdbserverd
  421 : rpc.rstatd

# psparse -X -c -p 151 -R 1 psinfo-A.log
Date.time 0609.04:36:07 proc 68 zomb 0 run 0 lwp 141 cpu 2.47% load1m 0.19 ptime 2801.2018 hp+stk 42.84M
PID   USERNAME HP+STK   CPU%  ELAPSED          TIME : CMDLINE
151       root 0.266M  0.00%  0d23715       00.1112 : /usr/sbin/inetd -s
  382       root 0.445M  0.00%  0d23662       00.1986 : rpc.ttdbserverd
  421       root 0.172M  0.00%  0d23644       00.2218 : rpc.rstatd

프로세스 트리에서는 최상위 프로세스 번호는 1번 init 프로세스이고, init 프로세스의 자식 프로세스부터 출력되며, 각 프로세스의 자식 프로세스인 경우에 2개의 공백을 넣고 프로세스 정보를 출력한다.
-p 옵션에 프로세스 ID를 지정하면, 그 프로세스를 포함하는 프로세스 트리만 보여준다. -p 옵션에는 시스템 프로세스(sched, pageout, fsflush)를 지정하면 무시된다. -X 옵션에 -c 옵션을 함께 사용하면, 각 프로세스 정보에 사용자명(USERNAME), CPU 사용률(CPU%) 프로세스 경과시간(ELAPSED), CPU 누적 사용시간(TIME)이 함께 표시된다.
-E 옵션을 지정하면 자식 프로세스의 CPU 누적 사용시간(CHILDTIME)을 더 보여준다.

-p 옵션에서 지정한 프로세스 ID가 한번 발견되고 그후로 그 프로세스 ID가 발견되지 않은 시점에는 더이상 파일을 조사하지 않고 끝낸다.
-a 옵션을 지정하면 파일의 끝까지 읽어서 프로세스 ID를 조사한다.