gmpstat
사용법
gmpstat [-G fn][-d cpu] [options] file
gmpstat -O fn -d cpu [options] file
Options are as follows:
-? print this help
-, put a comma in graph number
-0 zero based graph
-A make all the CPU graphs; same as '-d all'
-B bar graph
-b draw border line
-C bg:c1:c2 colors of the graph, colors must be 6 hex digits:
bg: background color; def: ffffff
c1: foreground color1; def: 0000ff
c2: foreground color2; def: ff0000
-c config configuration file for maximum values and titles
-D directory output directory; def: .
-d cpu[,cpu] specify CPU to make graph; def: total
cpu: one of 'all' 'total' 'max'
cpu: 0[,1]...
cpu: all=0,1,...
cpu: total=0,1,...
cpu: max=0,1,...
-e dot X-axis extension
-f put CPU# at graph's subtitle
-G fn[:[[max][-min]][:title]][,fn[:[[max][-min]][:title]]]... draw graphs for the specified fields
fn: cpu,minf,mjf,xcal,intr,ithr,csw,icsw,migr,smtx,srw,syscl,ncpu
-h height height per graph
-i interval interval (second)
-l n draw vertical lines on graph every n'th data
-L toplabel specify top label
-m print maximum values for each field
-M use common maximum value for each CPU
-N write time info(HH:MM:SS) at the bottom of the graph
-n count count of data to be processed
-o outfile output file, def: mpstat[.gif]
-O fn[+fn...] print field data line by line
fn: minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl
-P print only maximum value and minimum value for each field
-s start starting data to be processed. n or HHMMSS or HH:MM:SS
-S skiplist list starting word to skip (separated by comma)
-T title specify title; def: mpstat
-t HHMMSS starting time of gathering data
-V show version
-v print data in text without graph
-W generate HTML page
-w width width of the graph
-x do not make mpstat-mptbl.html and mpstat-mptbl.txt file
-y skip unknown field name in config file
file output of "mpstat" command
설명
gmpstat는 mpstat 명령어의 출력을 저장한 file을 읽어 들여,
각 필드에 대하여 GIF 파일포멧의 그래프를 만든다.
# mpstat 60 > mpstat.log
CPU의 개수가 2개 이상이면,
각각의 processor의 값을 더하여 그래프를 그리고, CPU 필드(usr,sys)는 CPU
개수로 나눈 값으로 그래프를 만든다.
mpstat의 출력은 다음과 같은 형태이다.
CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl
0 74 2 2272 75 0 349 61 26 49 0 1173 26 6 0 68
1 74 2 2325 75 0 350 61 26 48 0 1183 26 6 0 68
2 74 1 2548 130 56 347 60 25 48 0 1187 26 6 0 67
3 74 2 2649 76 0 354 61 26 49 0 1189 26 6 0 68
CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl
0 84 2 827 28 0 427 12 14 30 0 1544 15 6 0 79
1 68 0 615 22 0 274 8 9 22 0 978 48 4 0 49
2 87 2 1345 88 35 391 9 12 41 0 1751 17 8 0 75
3 91 0 911 43 0 416 10 13 36 0 1712 13 7 0 81
... skip ...
|
mpstat의 출력물에서 다음과 같은 필드가 선택되어 그래프를 그리는데 사용된다.
cpu(usr + sys), minf, mjf, xcal, intr, ithr, csw, icsw, migr, smtx, srw, syscl
각각의 필드에 대한 의미는 mpstat 메뉴얼 페이지를 참고한다.(# man mpstat)
그래프의 내용중에 ncpu 그래프가 있는데, 이것은 데이타가 수집된 시점에 online 된 CPU 개수를 표시한다.
mpstat의 결과물에서 첫번째 데이타는 사용되지 않고, 두번째 데이타부터
사용된다.
첫번째 데이타는 시스템 부팅부터 지금까지 평균이며, 측정한
시점의 데이타에 대한 정확도가 없기 때문에 사용되지 않는다.
위의 mpstat의 출력물에 4개의 CPU가 사용되고 있음을 알 수 있다. 여기서 첫번째
데이타란 CPU 0,1,2,3 4개 라인을 첫번째 데이타로 간주한다.
-s 옵션을 사용하여 시작하는 데이타의 위치를 지정할 수 있는데, 여기서 -s 10 이라고
지정하면 실제 데이타 파일에서는 11번째 데이타부터 그래프를 그린다.
위에서 설명했듯이 데이타 파일의 첫번째 데이타는 유효한 데이타로 간주하지 않는다.
데이타 파일에 #으로 시작하는 라인이 있으면 그 라인을 스킵한다.
09시 정각에 60초 간격으로 데이타를 수집하였다고 가정하면, 그래프 상에서
09시 01분 00초에 표시된 값은 09시 00분 00초 부터 09시 01분 00초 동안의 초당값이다.
mpstat의 출력물, mpstat.log를 가지고 각 옵션에 대하여 설명한다.
명령어 | 설명 |
# gmpstat mpstat.log |
옵션 없이 그래프를 만든다. CPU가 여러 개 있을 경우, CPU 사용량은
평균값을 사용하고,
나머지 각각의 필드에 대하여는 합계를 사용하여 그래프를 그린다.
-o 옵션을 지정하지 않으면, 디폴트로 mpstat.gif 파일을 만든다.
|
# gmpstat -A mpstat.log
# gmpstat -d all mpstat.log
|
-A 옵션은 각각의 CPU에 대하여 그래프를 그린다. 이 옵션은 -d all
옵션과 같은 의미이다.
생성된 각각의 CPU에 대한 그래프 명은 mpstat_cpuN.gif 이고, 전체 CPU의
합계는 mpstat.gif에 그리고, 각각의 CPU에서 최대 값만 모아서 mpstat_max.gif 파일을 만든다.
-d all 옵션 사용하면, 각각의 CPU에 대해 그래프를
만들어 주고, 각각의 필드에 대한 최대 값을 정리한
mpstat-mptbl.html파일과
mpstat-mptbl.txt파일을 만들어 준다.
-x 옵션을 지정하면 mpstat-mptbl.html, mpstat-mptbl.txt 파일을 만들지 않는다.
만일 각 CPU에 대하여 특정 필드만 하나의 페이지에 보고 싶다면 다음과 같이 할 수 있다.
# gmpstat -o intr -T . -M -f -A -G intr mpstat.log
# ls intr*
intr.gif intr_cpu0.gif intr_cpu1.gif intr_cpu2.gif intr_cpu3.gif
# imglist -t "2002/11/26 interrupt" intr* > intr.html
|
위의 명령어에 의해 만들어진 그래프는 intr.html에서
확인할 수 있다.
gmpstat 명령어에서 '-T .' 옵션은 각 그래프에서 상단 제목 표시하지 않게 하고,
'-M' 옵션은 각 그래프의 최대값을 개별 CPU 그래프의 최대값이 아니라 각 개별 그래프의
최대값을 중 제일 큰 값을 각각 그래프의 최대값으로 사용하고,
'-f' 옵션은 각 그래프의 제목에 대하여 CPU 번호를 앞에 붙인다.
imglist 명령어는 인수로 지정한 그림 파일명에 대하여
한 페이지에 그림파일을 볼 수 있도록 HTML 태그를 만들어 표준출력으로 출력한다.
-d 옵션에 CPU를 지정하면, 그 CPU에 대해서만 그래프를 만들어 준다.
두개 이상의 CPU를 지정하면 mpstat-mptbl.html 파일과 mpstat-mptbl.txt 파일을 만들어 준다.
# gmpstat -d 0,1,2 mpstat.log
|
위의 명령어는 CPU 0, 1, 2 세개에 대한 그래프를 만든다.
다음과 같이, 특정 CPU들에 대해서만 합계그래프나 최대값 그래프를 만들 수 있다.
# gmpstat -d all=0,1,2 mpstat.log
|
위의 명령어는 CPU 0, 1, 2 세개의 CPU를 전체 CPU로 가정하고 그래프를 만든다.
all= 이 지정되어 있으므로 total 그래프, max 그래프. 각각 CPU 0 1 2 에 대한 그래프를
만든다.
# gmpstat -d total=0,1,2 mpstat.log
|
위의 명령어는 CPU 0, 1, 2 세개의 CPU를 전체 CPU로 가정하고 total 그래프를 만든다.
# gmpstat -d max=0,1,2 mpstat.log
|
위의 명령어는 CPU 0, 1, 2, 세개의 CPU를 전체 CPU로 가정하고 max 그래프를 만든다.
|
# gmpstat -B mpstat.log |
-B 옵션은 막대 그래프를 만든다.
|
# gmpstat -t 090000 -i 60 mpstat.log
# gmpstat -t 090000 -i 60 -l 0 mpstat.log
# gmpstat -t 090000 -i 60 -N mpstat.log
# gmpstat -t 090000 -i 60 -N -e 5 -n 120 mpstat.log
|
-t 090000 -i 60 옵션은 그래프의 X축에 시간을 표시한다.
데이타를 수집한 시작 시간은 09시 00분 00초이고, 시간 간격은 60초이다.
-i 옵션과 함께 -l 0 옵션을 사용하면, 10 분 간격으로 회색 점선을 그린다.
-i 옵션과 함께 -N 옵션을 사용하면,
60 dot 간격으로 그래프의 하단에 시간(HH:MM:SS)을 표시한다.
-e 옵션과 함께 -N 옵션을 사용하면 그래프의 구간을 자세히 볼 수 있다.
|
# gmpstat -w 200 mpstat.log |
-w 200 옵션은 그래프의 폭을 200 dot로 지정한다. 이 옵션이
지정되어 있지 않으면, 데이타의 개수 만큼의 폭을 차지하며, 그 폭이
480 dot 보다 적으면, 480 dot로 사용된다. -w 0 옵션을 지정하면,
실제 데이타 양 만큼의 폭으로 그래프를 만든다.
|
# gmpstat -s 100 -n 200 mpstat.log |
-s 100 옵션은 100 번째 데이타부터 읽어 들인다.
-n 200 옵션은 200개의 데이타에 대해서만 그래프를 만든다.
-i 옵션과 함께 -s 옵션에서 다음과 같이 시간을 지정하면 그 시간부터
그래프를 그린다.
HHMMSS or HH:MM:SS
Exam) # gmpstat -i 60 -t 090000 -s 10:00:00 mpstat.log
|
# gmpstat -e 10 -n 40 mpstat.log |
-e 10 옵션은 1 개의 데이타가 X축으로 10 dot의 간격을 가지게 한다.
-n 40 옵션은 40 개의 데이타로 그래프를 만든다.
|
# gmpstat -h 100 mpstat.log |
-h 100 옵션은 각 단위 그래프의 높이가 100 dot의 크기를 가지게
한다.
|
# gmpstat -T "July 1" mpstat.log |
-T "July 1" 옵션은 그래프의 상단에 제목을 쓰는데 사용된다.
-T "" 또는 -T . 옵션을 사용하면, 상단의 제목을 쓰지 않는다.
디폴트는 "mpstat [%c]" 이다. %c는 CPU 번호로 대치된다.
|
# gmpstat -G cpu,xcal,smtx mpstat.log |
-G cpu,xcal,smtx 옵션은 mpstat 데이타 중에
cpu xcal smtx 필드에 대한 그래프만 그려준다.
-G fn[:[[max][-min]][:title]][,fn[:[[max][-min]][:title]]]...
fn |
필드명을 지정한다.
필드명은 다음과 같다.
cpu minf mjf xcal intr ithr csw icsw migr smtx srw syscl
|
[max][-min] |
그래프의 최대값과 최소값을 지정한다.
|
title |
그래프의 제목을 지정한다.
|
-G and -c option 에 대한 자세한 설명
|
# gmpstat -c gmp.conf mpstat.log |
-c gmp.conf 옵션은 구성파일 gmp.conf를
지정한다.
구성파일의 형식은 다음과 같으며, 한 라인에 하나의 필드를 정의한다.
fn[:[[max][-min]][:title]]
구성파일에는 각 그래프의 최대값과 최소값과 그래프 제목을 지정할 수 있다.
공백 라인과 '#' 문자로 시작하는 라인은 스킵된다.
fn |
필드명을 지정한다.
필드명은 다음과 같다.
cpu minf mjf xcal intr ithr csw icsw migr smtx srw syscl
|
[max][-min] |
그래프의 최대값과 최소값을 지정한다.
|
title |
그래프의 제목을 지정한다. 제목에 "."을 지정하면 그래프의 제목을 표시하지 않는다.
|
-G and -c option 에 대한 자세한 설명
다음은 구성파일에 대한 예제이다.
csw::CSW - Context Switching
csw:1000
csw:1000-500
csw:-500
csw:1000-500: Context Switching
|
# gmpstat -C 00ffff::: mpstat.log
# gmpstat -C :ff00ff:00cc00:dcdcdc mpstat.log
|
-C 00ffff::: 옵션은 그래프의 배경 색으로 RGB #00ffff를 지정한다.
배경 색에는 transparent를 지정할 수 있다. 이 경우 그래프의
배경 색은 투명하게 된다.
-C :ff00ff:00cc00:dcdcdc 옵션은 그래프의 선의 색을 RGB #ff00ff와
#00cc00과 #dcdcdc 로 지정한다.
|
# gmpstat -W mpstat.log |
-W 옵션은 HTML 페이지를 만든다. -o옵션을 사용하지 않으면,
디폴트로 "mpstat.html" 파일이 생성된다. 이 HTML 파일에는 각 필드에 대한
최대 값이 하단에 정리되어 있다.
|
-,
옵션을 지정하면 그래프의 Y축 숫자에 3자리 마다 콤마를 추가한다.
|
-0 옵션은
그래프의 시작값(Y축)을 0부터 시작한다. 디폴트로 그래프의 시작값은 데이타의 최소값과 최대값에 따라 결정된다.
|
-b
옵션은 츨력되는 이미지에 외곽선을 그린다.
|
-d cpu[,cpu]...
옵션은 그래프를 만들 CPU 번호를 지정한다. 형식은 다음과 같다.
cpu: one of 'all' 'total' 'max'
cpu: 0[,1]...
cpu: all=0,1,...
cpu: total=0,1,...
cpu: max=0,1,...
CPU 번호 대신에 CPU 번호를 가지고 있는 파일명을 지정할 수 도 있다.
CPU 번호가 있을 자리에 '+' 로 시작하는 단어는 파일명으로 간주하여 그 파일에 있는 내용을 읽어들인다.
파일에는 한줄에 하나씩 CPU 번호를 지정하여야 한다.
# cat diskfile
1
2
3
# gmpstat -d +diskfile,10 mpstat.log
# gmpstat -d 1,2,3,10 mpstat.log
|
위의 두개의 gmpstat 명령어는 동일한 결과를 갖는다.
-d 옵션에 지정한 CPU 번호가 mpstat 명령어의 첫번째 결과에 없으면, 다음과 같은
오류가 발생한다.
$ gmpstat -d 123 mpstat.log
ERROR: unknown cpu name: '123' for -d option
|
-d 옵션에 지정한 CPU 번호가 mpstat 명령어의 결과 파일에서 첫번째 수집한 데이타에 있어야 한다.
여기에 없는 CPU 번호을 지정하면, 오류가 발생한다. mpstat 명령어를 실행하는 도중에
CPU를 추가하면, 추가된 CPU 번호는 첫번째 수집 데이타에 없게 된다.
이럴 경우 CPU 번호 앞에 '-' 붙이면, 오류를 발생하지 않고 처리한다.
|
-O 옵션을 사용하며 mpstat 명령어의 결과파일에서 필요한 필드만 지정하여 CPU 별로
뽑아 낼 수 있다.
# gmpstat -O intr -d 0,1,2,3 mp.log
# FIELD: intr
CPU0 CPU1 CPU2 CPU3
75 75 130 76
28 22 88 43
38 37 74 30
62 49 99 57
75 53 124 60
81 60 120 70
|
다음의 그래프는 위에 있는 데이타를 가지고
mkgraph 명령어를 사용하여
각각의 CPU의 intr에 수치를 하나의 그래프에 그렸다.
# mkgraph -1 sum -H -G +::intr -e 5 -w 200 -o gr-mp mp.out
# mkgraph -1 sum -B -H -G +::intr -e 5 -w 200 -o gr-mp-B mp.out
|
|
-o outfile
옵션은 출력될 그래프의 파일명을 지정한다. 디폴트는
"mpstat[.gif]"이다. HTML 파일명은 mpstat.html 이다.
만일 다음과 같이 -o 옵션에 aaa 라고 지정하면 출력되는 파일명은 다음과 같다.
aaa.gif
aaa.html
aaa-mptbl.html
aaa_cpu0.gif
aaa_cpu0.html
aaa_cpu1.gif
aaa_cpu1.html
|
-D directory
옵션은 출력될 그래프를 만들 디렉토리명을 지정한다. 디폴트는 "."이다.
지정한 디렉토리가 없으면 새로 만들어 준다. 단 최하단의 디렉토리만 만든다.
|
-f
옵션을 -A 옵션과 함께 사용하면, mpstat 명령어를 각 필드명 앞에
CPU 번호를 붙인다.
예) minf: minor faults ---> [cpu2] minf: minor faults
|
-l n
옵션은 출력될 그래프에 n 간격의 데이타에 회색 점선을 그린다.
n이 0이고 -i 옵션과 함께 사용하면 10 분 간격으로 회색 점선을 그린다.
|
-L toplabel
옵션을 사용하여, 그림의 상단에 배경색을 회색으로 하는 글자를 표시할 수 있다.
|
-m
옵션은 선택된 각 필드에 대한 최대 값을 출력한다.
|
-M
옵션을 -A 옵션과 함께 사용하면, 각 CPU에 대한 그래프들의 최대값을
각 CPU에 따라 결정하는 것이 아니고, 전체 CPU들에 공통된 최대값을 사용한다.
|
-P
옵션은 각각의 그래프의 우측에 표시될 최대값과 최소값을 다음과 같은 형식으로
표준출력으로 출력한다.
fn:max-min
이때 그래프는 만들지 않는다. 표준출력으로 출력되는 값을 리다이렉트(redirect)하여
파일로 저장하면, -c 옵션에 구성파일로 사용할 수 있다.
mpstat 명령어로 여러 개의 파일을 만들었을 경우에 각각에 대하여
그래프를 그리면, 그래프의 최대값과 최소값은 수집된 데이타에 의해 자동으로
의해 결정된다.
만일 3개의 파일이 있다고 가정하면, 각각의 파일들이 최대값과 최소값이 다를 수
있다. 이 경우 3개의 데이타를 그래프 상에서 비교할 때, 최대값과 최소값이 다르기
때문에 비교하기가 어려울 수 있다.
이러한 경우, -P 옵션을 사용하여 각각 수집된 데이타 파일에 대하여 최대값 및 최소값을
구해서 공통된 최대값과 최소값을 구성파일로 만들어 -c 옵션에 구성파일로
지정하여 다시 3개의 파일에 대하여 그래프를 그리면 공통된 최대값과 최소값을
가지는 3개의 그래프 파일을 만들 수 있다.
다음은 -P 옵션을 사용한 결과 화면이다.
# gmpstat -P mpstat.log
cpu:100-0
minf:600-0
mjf:20-0
xcal:10-0
intr:500-400
ithr:300-200
csw:200-0
icsw:40-0
migr:10-0
smtx:10-0
srw:10-0
syscl:1000-0
|
-P 옵션의 결과값을 저장한 파일은 adjmaxmin 명령어에 의해
가공되어 구성파일로 사용될 수 있다.
| -S skiplist
-S 옵션을 사용하여 데이타로 사용되지 않는 입력라인을 제거할 수 있다.
file속에 있는 내용 중에 데이타가 아닌 라인이 있을 경우, -S 옵션을 사용하여,
그 라인에서 시작하는 문자열을 지정하여 스킵할 수 있다.
스킵하고 싶은 문자열이 여러 개가 있을 경우에 콤마(,)로 구분한다.
지정한 문자열과 입력 데이타 라인과 비교하여, 일치하면 그 라인을 스킵한다.
입력 라인에서 시작 부분의 whitespace (공백 또는 탭)는 비교되지 않는다.
Solars 11 버전의 mpstat 명령어에는 -T 옵션을 사용하여 시간 정보를 출력할 수 있는데,
mpstat 명령어에 -T 옵션을 사용하여 데이타를 수집했다면, -S 옵션을 사용하여 그 정보를 제거하여야 한다.
|
-V
-V 옵션을 지정하면, 명령어의 버전 정보를 보여준다.
|
-v
옵션은 그래프를 만들지 않고 데이타 파일에 있는 값을 출력한다.
cpu 컬럼에 나오는 값은 usr + sys 값이다. wt는 포함되지 않는다.
|
-y
옵션은 -c config 옵션과 함께 사용될 수 있다. 이 옵션을 지정하면 config 파일에
알 수 없는 필드명이 있을 때, 프로세스를 종료하지 않고 그 필드명을 스킵한다.
|
|