2011년 5월 25일 수요일

VM 분석 : Chapter 1 Performance - 2 / -Xrunprof 옵션

-Xrunprof 옵션
이 옵션은 단순히 텍스트 형태로 쓰레드 정보와 메소드 호출 점유율, 호출 횟수, 호출 쓰레드 번호등을 보여준다. 이 옵션은 어플리케이션의 성능 측정에서 병목점을 찾을 때 많이 사용한다.
병목점은 찾는 방법은 점유율(%)가 높으면서, 호출 횟수는 작은 순서가 병목점의 순서가 된다.
최근에는 이 옵션은 단순히 HAT(The Heep Analysis Tool)을 실행하기 위한 바이너리 타입의 기초 데이터를 생성(format=b 옵션)하는 용도로 많이 쓰이기도 한다.
[craftlee@hurukku testspace]$ java -Xrunhprof:help
Hprof usage: -Xrunhprof[:help]|[:<option>=<value>, ...]
Option Name and Value Description Default
--------------------- ---------------------- -------
heap=dump|sites|all heap profiling all
cpu=samples|times|old CPU usage off
monitor=y|n monitor contention n
format=a|b ascii or binary output a
file=<file> write data to file java.hprof(.txt for ascii)
net=<host>:<port> send data over a socket write to file
depth=<size> stack trace depth 4
cutoff=<value> output cutoff point 0.0001
lineno=y|n line number in traces? y
thread=y|n thread in traces? n
doe=y|n dump on exit? y
gc_okay=y|n GC okay during sampling y
Example: java -Xrunhprof:cpu=samples,file=log.txt,depth=3 FooClass
Note: format=b cannot be used with cpu=old|times


일반적인 사용 옵션
- java -Xrunhprof <class>
- java -Xrunhprof:cpu=samples,thread=y <class>
- java -Xrunhprof:heap=sites <class>
- java -Xrunhprof:cpu=samples <class>
- java -Xrunhprof:cpu=samples,file=log.txt <class>
- java -Xrunhprof:cpu=samples,format=b <class>
실행 예) 위에서 만든 “wileUnit.class”을 이용한다.
1. java -Xrunhprof:cpu=samples,thread=y whileUnit 옵션으로 실행
THREAD START (obj=811a410, id = 1, name="Finalizer", group="system")
THREAD START (obj=811a530, id = 2, name="Reference Handler", group="system")
THREAD START (obj=811a5f8, id = 3, name="main", group="main")
THREAD START (obj=813c9c8, id = 4, name="Signal Dispatcher", group="system")
THREAD START (obj=813ca58, id = 5, name="HPROF CPU profiler", group="system")
THREAD END (id = 3)
THREAD START (obj=814daf8, id = 6, name="DestroyJavaVM", group="main")
THREAD END (id = 6)
TRACE 1: (thread=3)
<empty>
TRACE 2: (thread=3)
whileUnit.exec(whileUnit.java:15)
whileUnit.main(whileUnit.java:27)
CPU SAMPLES BEGIN (total = 2) Mon Nov 22 12:59:32 2004
rank self accum count trace method
1 100.00% 100.00% 2 2 whileUnit.exec
CPU SAMPLES END


2. 위에서는 실행 메소드가 하나 뿐이 없어서 100%을 차지 하고있다.
3. java -Xrunhprof:heap=sites whileUnit 옵션으로 실행
percent live alloc'ed stack class
rank self accum bytes objs bytes objs trace name
1 63.90% 63.90% 602072 234 602072 234 1 [I
2 16.32% 80.23% 153800 577 153800 577 1 [C
3 5.02% 85.25% 47280 230 47280 230 1 [B
….

메모리에 점유율이 높은 객체 Ranking이 출력된다. 여기서 [I, [C, [B 타입은 Integer, Character, Byte 배열이다.

댓글 없음:

댓글 쓰기

ETL 솔루션 환경

ETL 솔루션 환경 하둡은 대용량 데이터를 값싸고 빠르게 분석할 수 있는 길을 만들어줬다. 통계분석 엔진인 “R”역시 하둡 못지 않게 관심을 받고 있다. 빅데이터 역시 데이터라는 점을 볼때 분산처리와 분석 그 이전에 데이터 품질 등 데이...