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.log | 0609.11:59:30 이후의 데이타에 대하여 |
# psparse -R -0609.11:59:30 psinfo-A.log | 0609.11:59:30 까지 데이타에 대하여 |
# psparse -R 0609.11:59:30 psinfo-A.log | 0609.11:59:30 데이타에 대하여 |
# psparse -R 09:00:00 psinfo-A.log | 09:00:00 부터 첫번째 대하여 (-R 09:00:00-1 과 같음) |
# psparse -R 09:00:00-5 psinfo-A.log | 09: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:
-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:
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를 조사한다.
|
|