getdata
사용법
getdata [[-A [-Z] | -p [-n num]][-W wcpu]] [-V][-B][-G seldata][-x "command"][-o directory][-i interval][-I info] -t time
getdata -P
Options are as follows:
-? print this help
-A gathering all the process informations
-B gathering data in the background as a daemon
-G seldata seldata is one or more characters of 'vminps'; def: vmin
v vmstat
m mpstat
i iostat
n netinfo
s sadc
p psinfo
-I info specify info text
-i interval interval: second; def: 30
-n num 1 <= num <= 100; number of processes to capture: def 10
-N allow small interval
-o directory directory for output; def: .
-p gathering process informations which use CPU and HP+STK much
-P show processes run by 'getdata' command
-t time time format: hour[:minutes], ex) 1 or 1:30, 0:30
-T tag specify tag for output
-x command run command when starting
-V show version
-W wcpu append -W wcpu option to 'tsinfo' command
-Z append -Z option to 'psinfo' command
설명
getdata는 지정한 -G 옵션(디폴트: vmin)에 따라 필요한 명령어를 사용하여 시스템
통계정보를 수집한다. -G 옵션에 지정할 수 있는 옵션문자는 다음과 같다.
옵션문자 | 실행할 명령어 | 로그 파일명 |
v | vmstat (/usr/bin/vmstat) | vmstat.log |
m | mpstat (/usr/bin/mpstat) | mpstat.log |
i | iostat (/usr/bin/iostat) | iostat.log |
n | netinfo (/opt/JSparm/bin/netinfo) | netinfo.log |
p | psinfo (/opt/JSparm/bin/psinfo) | psinfo.log |
tsinfo (/opt/JSparm/bin/tsinfo) | tsinfo-M.log |
s | sadc (/usr/lib/sa/sadc) | sadc.log |
Parm V10.2 버전 부터 프로세스 정보를 수집할 때, 시스템에서 실행되고 있는 쓰레드들을
조사하는 "tsinfo -M" 명령어도 1 시간 간격으로 실행하여 그 결과를 tsinfo-M.log 파일에 저장한다.
다음은 60초 간격으로 8시간 동안 데이타를 수집한다.
# getdata -i 60 -t 8
Start to gather system info: interval 60 seconds, time: 8
Collecting data: vmstat mpstat iostat netinfo
Data directory: ./data.20120308.080000.60 |
getdata 명령어는 현재 디렉토리에 ./data.20070308.080000.60 디렉토리를 만들고,
그 디렉토리에 들어가서 각각 vmstat, iostat, netinfo, mpstat 명령어를 실행하여 그 결과를
vmstat.log, iostat.log, netinfo.log, mpstat.log 파일로 저장하고,
data_info라는 파일도 만든다.
-A 옵션을 지정하면 모든 프로세스 정보를 함께 수집한다.
# getdata -A -i 60 -t 8
Start to gather system info: interval 60 seconds, time: 8
Collecting data: vmstat mpstat iostat netinfo psinfo tsinfo
Data directory: ./data.20120308.090000.60 |
이렇게 프로세스에 대한 모든 정보를 수집하면 mkrep.sh 명령어가
프로세스 정보에 대하여 그래프를 그려준다.
그리고 psinfo.log 파일에 대해 psparse 명령어를
사용하여 다양한 형태로 가공하여 유용한 정보를 볼 수 있다.
getdata 명령어가 실행하는 명령어들은 다음과 같이 확인할 수 있다.
# ps -eaf | grep getdata
guest 5390 5386 0 01:22:00 pts/8 0:00 getdata_psinfo -A 60 481
guest 5391 5386 0 01:22:00 pts/8 0:00 getdata_tsinfo -M 3600 9
guest 5389 5386 0 01:22:00 pts/8 0:00 getdata_mpstat 60 481
guest 5392 5386 0 01:22:00 pts/8 0:00 getdata_netinfo -sx 60 480
guest 5387 5386 0 01:22:00 pts/8 0:00 getdata_vmstat 60 481
guest 5388 5386 0 01:22:00 pts/8 0:00 getdata_iostat -zx 60 481
guest 5386 551 0 01:22:00 pts/8 0:00 getdata -i 60 -t 8 -A
|
PARM V7.2 이상 부터는 getdata 명령어에 -P 옵션을 지정하여 실행하면 다음과 같이
getdata 명령어가 실행한 프로세스 정보를 보여준다.
# getdata -P
PID PPID ELAPSED CMDLINE
5386 551 0d151 getdata -i 60 -t 8 -A
5390 5386 0d151 getdata_psinfo -A 60 481
5391 5386 0d151 getdata_tsinfo -M 3600 9
5389 5386 0d151 getdata_mpstat 60 481
5392 5386 0d151 getdata_netinfo -sx 60 480
5387 5386 0d151 getdata_vmstat 60 481
5388 5386 0d151 getdata_iostat -zx 60 481
|
-P 옵션은 프로세스명이 getdata 명령어인 것을 찾아서 그 프로세스 그룹에 속한 프로세스를
보여준다.
프로세스 그룹이란 getdata 명령어가 실행하거나 그 차일드 프로세스가 실행한
것들도 포함한다.
getdata 명령어를 실행하는 중도에 종료하려면
Ctrl-C
또는
# kill pid_of_getdata
위와 같이 중단할 수 있다. "# kill -9 pid_of_getdata"를 사용하면,
child 프로세스를 중단하지 못하고 getdata가 종료되기 때문에,
child 프로세스들을 찾아서 직접 종료시켜야 한다.
child 프로세스중에 하나라도 비정상적으로 종료되면, getdata 명령어가 이를
감지하여, 모든 child 프로세스를 종료시키고, 데이타 수집을 마친다.
getdata 명령어에 의해 수집된 데이타는 mkrep.sh 명령어에
의해, HTML 페이지를 만드는데 사용된다.
mkrep.sh는 쉘스크립트이며, 이 명령어는 gvmstat, giostat,
gnetinfo, gmpstat 명령어를 조합하여 필요한 HTML 페이지를 만든다.
다음은 mkrep.sh 명령어를 사용하여 수집한 데이타를 가공한다.
먼저 데이타를 수집한 디렉토리에 들어가서 mkrep.sh 명령어를 실행한다.
# cd data.20070308.090000.60
# mkrep.sh simple Junsoft
Top web page is index_simple.html
|
mkrep.sh 명령어는 getdata
명령어로 수집한 데이타에 대하여, GIF 파일과 HTML 파일을 현재 디렉토리에 만들어
준다.
그 중에 index_simple.html 파일은 전체를 보여주는
HTML 파일이다.
시스템에 netscape가 있을 경우, 다음과 같은 명령어로 index_simple.html
파일을 볼 수 있다.
# netscape file:///`pwd`/index_simple.html
리모트 시스템에서 이 파일을 액세스하려면, 다음과 같이 미니
웹 서버 gwserv를 실행하여 액세스할 수 있다.
# gwserv
gwserv is started on port 8008
|
gwserv는 현재 디렉토리를 도큐멘트 루트 디렉토리로 사용하여 TCP 포트 8008 번에 미니 웹서버를 실행한다.
이 경우에 리모트 시스템에서는 다음과 같은 URL로 index_simple.html
파일을 액세스할 수 있다.
(이 시스템 명은 dragon이다.)
http://dragon:8008/index_simple.html
getdata는 필요한 몇 가지 정보를 "data_info" 파일에 저장한다.
이 파일은 다음과 같은 형태이며, mkrep.sh 명령어가
HTML 페이지를 만드는데 사용된다.
[data_info 파일내용]
#
# Do NOT edit it manually
#
HOST: dragon
OS_VERSION: 5.8
MACHINE: sun4u
START_DATE: 2007/03/08.093000
INTERVAL: 60
TIME: 8
COUNT: 480
SELOPT: vminp
END_DATE: 2007/03/08.173000
STATUS: SUCCESS
|
데이타를 수집하는 횟수는 480회가 그래프를 그리는데 가장 알맞은 크기이다.
시스템 성능분석용이 아니고, 통상적인 시스템 사용량을 수집할 경우라면,
다음과 같은 3가지 형식이 일반적이다.
# getdata -A -i 60 -t 8
# getdata -A -i 90 -t 12
# getdata -A -i 180 -t 24
CPU 사용량과 각 프로세스 중에 CPU를 많이 사용하고 있는 프로세스 정보를 수집하고
싶으면, 다음과 같은 사용할 수 있다.
# getdata -G vp -i 60 -t 8
60초 간격으로 vmstat와 psinfo 명령어의 결과를 저장한다.
psinfo 명령어는 60초 간격으로 프로세스들의 정보를 조사하여 CPU가 가장
많이 사용된 순으로 10개의 프로세스 정보를 저장한다.
수집한 데이타에 대해 mkrep.sh를 사용하여 그래프를
만들고, 그래프에서 CPU 사용량이 많은 시점이 있을 경우, psinfo.log 파일을
조사하여 CPU를 많이 사용하는 프로세스를 찾을 수 있다.
모든 프로세스 정보만 수집하고 싶다면 다음과 같이 하면 된다.
# getdata -A -G p -i 180 -t 24
Start to gather system info: interval 180 seconds, time: 24
Collecting data: psinfo tsinfo
Data directory: ./data.20080608.021914.180
|
위의 명령어는 180초 간격으로 24시간 동안 데이타를 수집한다,
-A 옵션과 -G p 옵션을 둘다 지정하여야 프로세스 정보만 수집한다. -G p 옵션을
지정하지 않으면 -G 옵션의 디폴트 옵션인 -G vmin이 포함되어 프로세스 정보 뿐만 아니라
vmstat, mpstat, iostat, netinfo 명령어의 결과도 수집한다.
매일 24시간 시스템 사용량을 정기적으로 저장하고 싶다면, 다음과 같은 명령어를
crontab에 넣어서 사용할 수 있다.
0 0 * * * /opt/JSparm/bin/getdata -o /perfdata/parm -A -i 60 -t 24 > /dev/null 2>&1
|
매일 0시부터 0분에 1분 간격으로 24시간 동안 데이타를 수집하여 /perfdata/parm 디렉토리에
보관한다.
1 0 * * * find /perfdata/parm -mtime +30 -type d -name "data.*" -exec rm -rf {} \; > /dev/null 2>&1
|
위의 명령어는 매일 0시 1분에 find 명령어를 실행하여 /perfdata/parm 디렉토리 밑에서 수정 시간이 30일이
지난 디렉토리명이 ‘data.’ 으로 시작하는 디렉토리를 ‘rm –rf’ 명령어로 지운다.
다음은 getdata의 각 옵션에 대하여 설명한다.
-A |
-G 옵션에서 p를 지정하면 프로세스 정보를 수집하는데, 이때 -A 옵션이 지정되어 있으면,
psinfo 명령어에 -A 옵션이 지정되어, 모든 프로세스에 대한 자세한 정보가 저장된다.
|
-B |
background 모드에서 데이타를 수집한다.
사용자가 명령어를 실행한 터미날에서 빠져 나와도 프로세스는 종료되지 않고 계속 실행된다.
|
-G seldata |
-G seldata 옵션은 수집할 데이타를 지정한다.
v vmstat
m mpstat
i iostat
n netinfo
p psinfo tsinfo
s sadc
-G 옵션을 지정하지 않으면, 디폴트로 vmin이 사용된다. 즉, vmstat, iostat,
netinfo, mpstat 명령어의 결과를 수집한다.
-p 옵션이 지정되면, psinfo 명령어를 사용하여 interval 시간 간격에 따라 CPU
사용률이 제일 많은 10개의 프로세스 정보와 힙과 스텍(HP+STK)을 많이 사용하는
5개의 프로세스 정보를 보여준다.
이때 사용되는 psinfo 명령어의 옵션은 다음과 같다.
# psinfo -j -t 10 interval count
-n num 옵션을 사용하여 수집할 프로세스의 개수를 지정할 수 있고,
-A 옵션을 사용하여 모든 프로세스에 대한 정보를 저장할 수 도 있다.
|
-I info |
-I 옵션에 지정한 info 문자열을 data_info 파일에 추가 한다.
이 문자열을 수집한 데이타에 대한 설명을 지정하기 위한 것이다.
|
-i interval |
데이타를 수집할 시간 간격은 지정이다. 디폴트는 30초이고, 최소시간은 5초이다.
|
-n num |
-G seldata 옵션에 'p'가 지정되었을 경우, 수집할 프로세스 개수이다.
디폴트는 10 이다.
(1 <= num <= 100).
|
-N |
-i 옵션에서 데이타를 수집하는 시간 간격을 지정하는데, 최소 시간 간격이 5초이다
5초 보다 작은 시간 간격을 지정하면 오류가 발생한다. -N 옵션을 지정하면, 시간 간격이
5초 보다 작은 것도 사용할 수 있게 한다.
|
-o directory |
수집한 데이타를 저장할 디렉토리를 지정한다. 디폴트는 "." 이다.
지정한 디렉토리에 data.yyyymmdd.HHMMSS 형태의 디렉토리를 만들고,
그 디렉토리에 밑에 각각의 명령어에 대한 결과를 저장한다.
yyyymmdd.HHMMSS는 데이타 수집을 시작한 날짜와 시간이다.
|
-p |
-p 옵션을 지정하면 CPU를 많이 사용하는 10개의 프로세스와 HP+STK를 많이 사용하는 5개의 프로세스 정보를 수집한다.
이 옵션은 -G 옵션에 'p'를 추가한 것과 같다.
|
-P |
-P 옵션을 지정하면 getdata 명령어가 실행한 명령어 정보를 보여준다.
-P 옵션은 프로세스명이 getdata 명령어인 것을 찾아서 그 프로세스 그룹에 속한 프로세스를
보여준다. 프로세스 그룹이란 getdata 명령어가 실행하거나 그 차일드 프로세스가 실행한
것들도 포함한다.
|
-t time |
데이타를 수집한 기간을 지정한다. 형식은 hour[:minutes]이다.
예를 들어)
1 1 시간
1:30 1 시간 30분
0:30 30분
time의 최대값은 24 이다.
|
-T tag |
-T 옵션에 tag 를 지정하면, 데이타가 수집되는 디렉토리 명에 지정한 tag를 추가하여 디렉토리를 만든다.
Format:
data.yyyymmdd.HHMMSS.interval[.tag]
# getdata -i 10 -t 1 -T test1
Start to gather system info: interval 10 seconds, time: 1
Collecting data: vmstat mpstat iostat netinfo
Data directory: ./data.20160611.232845.10.test1
|
위의 명령어에서 -T test1 옵션을 지정하였기 때문에 데이타 디렉토리 명에 .test1이 추가된다.
|
-x command |
-x 옵션을 사용하여 명령어를 지정하면, 그 명령어에 interval과 count가 인수로 지정되어 명령어가 실행된다.
예를 들어, 다음과 같이 -x "./getinfo.sh" 옵션을 사용하여 getdata 명령어를 실행하면
# getdata -A -i 60 -t 8 -x "./getinfo.sh"
Start to gather system info: interval 60 seconds, time: 8
Collecting data: vmstat iostat netinfo mpstat psinfo tsinfo ./getinfo.sh
Data directory: ./data.20080502.010817.60
|
getinfo.sh 명령어는 다음과 같이 interval과 count가 인수로 지정되어 실행된다.
./getinfo.sh 60 480
getdata 명령어는 데이타를 수집하는 디렉토리(./data.20080502.010817.60) 안에 extra 디렉토리를
만든 다음에 그 디렉토리를 작업 디렉토리로 사용하여 getinfo.sh 쉘 스크립트를 실행한다.
즉, getinfo.sh 명령어에서 상대패스로 출력 파일명을 지정하면 extra 디렉토리에
만들어 진다.
getinfo.sh 쉘스크립트가 표준출력으로 출력하는 내용은 xrun.log 파일에 저장된다.
다음은 위에서 실행한 getdata 명령어의 프로세스 ID에 ptree 명령어를 실행한 결과이다.
# ptree 1757
914 /usr/bin/gnome-terminal
942 ksh
1757 getdata -A -i 60 -t 8 -x ./getinfo.sh
1758 getdata_vmstat 60 481
1759 getdata_iostat -zx 60 481
1760 getdata_mpstat 60 481
1761 getdata_psinfo -A 60 481
1762 getdata_tsinfo -A 3600 9
1763 getdata_netinfo -sx 60 480
1764 /bin/ksh /data/./getinfo.sh 60 480
1766 /opt/JSparm/bin/dolog -T 60,480 -o netstat-s.log netstat -s
|
다음은 getinfo.sh 쉘 스크립트의 내용이다.
#! /usr/bin/ksh
#
INTERVAL=$1
COUNT=$2
/opt/JSparm/bin/dolog -T $INTERVAL,$COUNT -o netstat-s.log netstat -s
|
-x 옵션에 지정되는 명령어에 인수를 가진다면, 지정한 인수 다음에 interval과 count가 인수로 추가된다.
다음과 같이 getinfo.sh 명령어가 /tmp 라는 인수를 가지면
# getdata -A -i 60 -t 8 -x "./getinfo.sh /tmp"
실재 getinfo.sh 명령어가 실행될 때, /tmp 인수 더하기 interval과 count도 인수로 전달된다
/bin/ksh /data/./getinfo.sh /tmp 60 480
-x 옵션을 사용하여 getdata 명령어가 만든 출력 디렉토리에 추가적으로 데이타를 수집할 수 있다.
|
-V |
-V 옵션을 지정하면, 명령어의 버전 정보를 보여준다.
|
-W wcpu |
tsinfo 명령어에 전달될 옵션이다.
Parm V10.2 부터 psinfo 명령어를 실행할 때, "tsinfo -M" 명령어도 함께 실행한다.
"tsinfo -M" 명령어는 시스템에 있는 쓰레드를 조사하여 WCPU 사용률이 90% 이상인 쓰레드가 있으면,
그 쓰레드를 1초 동안 모니터하여, 1초 동안 CPU를 사용한 시간과 시스템 콜을 호출한 횟수를 출력한다.
|
-Z |
-Z 옵션을 지정하면, psinfo 명령어를 실행할 때, -Z 옵션을 지정한다.
psinfo 명령어에 -Z 옵션을 지정하면, 프로세스 데이타를 수집할 때, zone 정보도 함께 수집한다.
|
|