태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

 

 

 

 
블로그 검색:
분류 전체.. (270)
나의 관심사 (167)
connec2u.com (66)
기술 분석/.. (34)
Safari  NFC  Qualcomm  안드로이드  Google  Microsoft  Android  iBeacon  IOT  개발자 인생 
 Content manag..
└>mindwing
 Nouveautés
└>mindwing
 Marque
└>mindwing
 Découvrez le..
└>mindwing
 Par date de d..
└>mindwing
«   2018/06   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
+ Total : 303,121
+ Today : 18
+ Yesterday : 17
  

 

 

 

NetBeans _해당되는 글 2건
2008.03.10   Eclipse 3.3.2 과 TPTP 4.4.1 을 이용한 Profiling (Remote site) 
2008.03.10   Eclipse 3.3.2 과 TPTP 4.4.1 을 이용한 Profiling (Eclipse Java Project) 
Google 의 재반격: Google Wallet

Google 처럼 시장을 맘대로 주무르면서 편하게 사업하는 기업도 없다는 없는 것 같지만, 사실 알고보면 Google 도 많은 실패를 겪었던 전력이 있습니다. 대표적으로 Google Wallet 을 들 수 있는데요. Googl..

iTunes Pass, 애플의 새로운 결제모델 실험일지도...

2일전, 애플은 iTunes Pass 라는 Apple Store 에 한해 사용할 수 있는 선불형 지불시스템을 발표했습니다. 그리고, 오늘은 미국과 호주에서도 사용할 수 있도록 적용국가를 늘렸다고 발표했습니다. iTunes Pa..

Thread Group 설립, Nest 와 ARM 과 삼성의 전략적 동거

Microsoft 와 삼성이 Intel 주도의 OIC 에 참여한다는 뉴스가 나온지 얼마 되지 않아서, 이번에는 Nest 가 주도하는 Thread Group 에 ARM 과 삼성이 참여한다는 뉴스가 나왔습니다. Nest 는 Goo..

NFC 와 Bluetooth 의 신경전

NFC 와 Bluetooth 의 승부는 아직 전운이 감도는 하지만, 본격적인 전투는 벌어지지 않은 전장과도 같습니다. 대체적인 평가로는 POS 같이 물리적인 접촉행위가 소비자에게 안심을 주거나 비교적 자유롭게 통행해도 괜찮은 ..

OIC, AllJoyn 의 대항세력 등장

Open Interconnect Consortium, 줄여서 OIC 라는 단체가 출범했습니다. 이 단체는 이름만 들어도 쟁쟁한 회사들이 모여서 설립되었는데요. Intel, Dell, Samsung, Atmel, Broadcom..

WiGig, Connected home 에서 네트워크의 중요성

IoT 는 기본적으로 사물들이 인터넷에 직접 혹은 간접적으로 자유롭게 연결될 수 있어야 한다는 중요한 전제가 있습니다. 기업시장에서는 BYOD 와 각종 센서들까지 접속을 필요로 하는 기기들이 엄청나게 많아질 것이므로, 접속속도..

 

Eclipse 3.3.2 과 TPTP 4.4.1 을 이용한 Profiling (Remote site)
+   [기술 분석/동향/Profiling]   |  2008.03.10 18:40  

문서의 목적

Eclipse 3.3.2 와 TPTP 4.4.1 을 이용해서 원격 JVM 에서 실행되고 있는 Java Application 을 Profiling 하는 방법을 알아본다.

이 문서는 'Eclipse 3.3.2 과 TPTP 4.4.1 을 이용한 Profiling (Eclipse Java Project)' 문서를 통해 TPTP 를 Profiler 로 먼저 써보았다고 가정한다. 이 문서는 http://mindwing.kr/131 을 참조한다.


Remote site 에서 Profiliing 할 Application 준비하기

우선, Profiling 을 할 테스트 프로그램을 만들어야 하는데, 이 문서에서는 다음 소스코드를 이용해서  C:\Users\handan\tptp\LookAtMe\bin\lookatme 에 클래스 파일을 만든 것으로 간주한다.

(별도로 Profiling 할 프로그램이 있다면 그것을 써도 된다.)

package lookatme;

public class LookAtMe extends Thread
{
    private long sleepTime;

    private int count;

    private static int getCount;

    LookAtMe(long sleepTime)
    {
        this.sleepTime = sleepTime;

        count = getCount();
    }

    private static int getCount()
    {
        synchronized (LookAtMe.class)
        {
            return ++getCount;
        }
    }

    public void run()
    {
        while (true)
        {
            System.out.printf("%d: %d\n", count, sleepTime);

            try
            {
                sleep(sleepTime);
            } catch (InterruptedException e)
            {
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args)
    {
        new LookAtMe((System.currentTimeMillis() % 3000) + 100).start();
        new LookAtMe((System.currentTimeMillis() % 3000) + 300).start();
        new LookAtMe((System.currentTimeMillis() % 3000) + 500).start();
        new LookAtMe((System.currentTimeMillis() % 3000) + 700).start();
        new LookAtMe((System.currentTimeMillis() % 3000) + 900).start();
    }
}


다음 화면과 같이 컴파일한다.


Remote site 에 TPTP 4.4.1 설치하고 실행하기

Eclipse 내에서 실행되는 Application 을 profiling 하기 위해서는 Integrated Agent Controller 를 쓰면 되기 때문에 Eclipse 외에 별도의 설치가 필요없다.

하지만, Remote site 에서 실행되는 Application 을 Profiling 하기 위해서는 Remote site 에 별도의 TPTP Agent Controller 를 설치해줘야 한다. (이 문서에서는 하나의 컴퓨터에서 모두 설정하지만, Eclipse 가 실행되는 환경과 Remote site 는 별개의 컴퓨터라고 샘각해야 한다.)

Remote site 에 TPTP Agent Controller 를 설치하려면, 다음 URL 에서 Remote site 의 환경에 맞는 TPTP 를 설치한다.

http://www.eclipse.org/tptp/home/downloads/

이 글에서는 다음 화면과 같이 C:\tptpAC 에 'WINDOWS-IA32' 를 설치했다고 가정한다.


다음 두 가지 시스템 프로퍼티 설정을 한다.

  • TPTP_AC_HOME
    • C:\tptpAC
  • JAVA_PROFILER_HOME
    • C:\tptpAC\plugins\org.eclipse.tptp.javaprofiler
  • PATH 에 추가
    • C:\tptpAC\bin

처음 실행하는 것이라면 다음과 같이 커맨드 창을 열어서 SetConfig 를 실행하고, 기본설정값을 설정하기 위해 엔터키를 계속 눌러준다.


이제 Remote site 에서 Agent Controller 를 실행해야 하는데, 우선 커맨드 창에서 테스트 프로그램이 설치된 디렉토리인 C:\tptpTest 디렉토리로 이동한다.

다음과 같이 입력해서 결과값을 확인한다.

[C:\tptpTest] java -agentlib:JPIBootLoader=JPIAgent:help;CGProf

@(#)JVMTI Agent version 1.0.0.1
Usage:
  -agentlib:JPIBootLoader=JPIAgent[:[help]|[<option>=<value>, ...]];<profiler>

Where:
  help                  Displays this message
  <option>=<value>      Command line options (see below)
  <profiler>            The profiler to launch:
        CGProf          Execution time analysis
        HeapProf        Memory analysis
        ThreadProf      Thread analysis

Supported option names and values:
  server=standalone|enabled|controlled
  file=<file>           Output file (default is trace.trcxml)
                        Only applicable when server=standalone
  filters=<file>        Filter definition file (default is filters.txt)
                        Only applicable when server=standalone
  profiler=<file>       Profiling options file (default is jvmti.pro)
                        Only applicable when server=standalone

Examples

Execution time analysis in standalone mode:
java -agentlib:JPIBootLoader=JPIAgent:server=standalone,file=log.trcxml;CGProf <
Java class file>

Memory analysis in controlled mode:
java -agentlib:JPIBootLoader=JPIAgent:server=controlled;HeapProf <Java class fil
e>

Error occurred during initialization of VM
agent library failed to init: JPIBootLoader

이렇게 안내문이 출력되면 설정은 잘 된것이다.

추가로, 다음과 같이 Eclipse 없이 독자적으로 Profiling 을 하는 Standalong 모드로 실행해서 Profiling 이 잘 되는지를 확인해본다.

[C:\tptpTest] java -agentlib:JPIBootLoader=JPIAgent:server=standalone;CGProf loo
katme.LookAtMe
3: 3371
5: 3772
2: 3171
1: 2970
4: 3572
1: 2970
2: 3171
3: 3371
4: 3572
5: 3772
1: 2970
2: 3171
.....

참고로, 주황색 부분인 CGProf 는 Profiling 모드를 지정하는 것으로 다음과 같은 값이 가능하다.

  • CGProf
    • Execution Time Analysis
  • HeapProf
    • Memory Analysis
  • ThreadProf
    • Thread Analysis

그리고, Agent Controller 는 TCP 포트 10002, 10005, 10006 을 사용하므로, 필요하다면 이 포트를 이용할 수 있게 관련 설정등을 해준다.

이제 Eclipse 의 TPTP 에서 Remote site 의 테스트 프로그램으로 접속할 수 있도록 다음과 같이 TPTP Agent Controller 를 실행한다. 우선은 Execution Time Analysis 모드로 해본다.

[C:\tptpTest] java -agentlib:JPIBootLoader=JPIAgent:server=controlled;CGProf loo
katme.LookAtMe

이제 Eclipse 에서 다음 화면과 같이 Attach to Agent 로 Profiling Configuration 을 만든다.


화면에서 localhost:10002 포트가 잡힌 것은 Eclipse 를 실행하는 컴퓨터에서 TPTP Agent Controller 를 설치했기 때문으로 실제로는 해당 서버를 지정해야 한다.

이제 Test Connection 을 눌러서 다음 화면과 같이 잘 연결됨을 확인한다.


Agent 탭으로 가서 Refresh 버튼을 누르면 다음과 같이 이미 설정된 Execution Time Analysis 용 TPTP Agent 가 보이는 것을 확인할 수 있다.


이제 Profile 버튼을 눌러서 바로 Profiling 을 실행할 수 있다.

다음 화면은 Eclipse 상에서 Profiling 이 실행되는 모습이다.


다음 화면은 TPTP Agent Controller 를 실행한 콘솔창의 모습으로 프로그램이 실행되고 있는 것을 알 수 있다.


이제 HeapProf 과 ThreadProf 에 대한 Profiling Configuration 을 추가하고, 적절하게 Remote site 에서 Agent Controller 를 실행해준다.

다음 화면은 HeapProf 로 실행한 Eclipse 의 모습이다.


다음 화면은 ThreadProf 로 실행한 Eclipse 의 모습이다.


 
 
     Eclipse, NetBeans, Profiler, TPTP, YourKit
     4   0

아이디 
비밀번호 
홈페이지 
비밀글   

 

 

Eclipse 3.3.2 과 TPTP 4.4.1 을 이용한 Profiling (Eclipse Java Project)
+   [기술 분석/동향/Profiling]   |  2008.03.10 16:00  

문서의 목적

Eclipse 3.3.2 와 TPTP 4.4.1 의 Integrated Agent Controller 를 이용해서 Eclipse 에서 만든 Java Application 을 Profiling 하는 방법을 알아본다.


TPTP 4.4.1 소개

TPTP 는 Test and Performance Tools Platform 의 약자로, Eclipse 에서 프로그래밍 언어에 상관없이 Test 와 Profiling 을 할 수 있는 기반을 만들어주는 Eclipse 의 프로젝트이다.

TPTP 는 최근 버전에서 Integrated Agent Controller 기능을 탑재하면서 Eclipse 에서 만든 자체 프로젝트의 경우 별도의 조작없이 프로그램 실행과 동시에 Profiling 을 수행할 수 있게 되었다.

TPTP 4.4.1 의 Profiling 기능은 다음과 같은 3가지 모드의 Profiler 로 나뉘며, 각 모드는 한 번의 Profiling 기능수행중에 동시에 진행되지 않는다. 다른 모드로 변경하기 원한다면 별도의 Profiling 을 진행해야 한다.

  • Execution Time Analysis
  • Memory Analysis
  • Thread Analysis

NetBeans 의 Profiler 보다는 나은 성능을 보여주지만, YourKit 같은 상용툴에는 아직 미치지 못한다.


Ecipse 3.3.2 와 TPTP 4.4.1 설치하기

Eclipse 3.3.2 를 쓰기 위해서 다음 URL 에 있는 Eclipse for RCP/Plug-in Developers 를 다운받아서 설치한다.

http://www.eclipse.org/downloads/

이 글에서는 다음 화면과 같이 c:\eclipse 에 설치한 것으로 간주한다.


TPTP 4.4.1 은 Eclipse 의 update 기능으로 설치한다.

우선, 메너에서 Help > Software Updates > Find and Install 을 선택해서 "Install/Update" 창을 띄운 후, "Search for new features to install" 옵션을 선택하고 Next 버튼을 누른다.

그 다음, "Europa Discovery Site" 을 선택하고 Next 버튼을 누르고, "Update site mirrors" 창에서 적절한 미러 사이트를 선택한다. (이 글을 쓰는 시점에서 Daum 측 미러사이트는 EMF 업데이트가 안되는 문제가 있어 KAIST 측 미러사이트로 진행했다.)

이제 다음 화면과 같이 Updates 창에서 "Testing and Performance" 과 "Select Required" 버튼을 누르고 Next 버튼을 누른다.


이후 안내를 따라 진행하다가 설치가 끝난 후 Eclipse 를 재시작시킨다.


Profiliing 할 Java 프로젝트 준비하기

먼저, Integrated Agent Controller 는 기본으로 비활성화되어 있다.

이를 활성화하기 위해 다음 그림과 같이 Preferences - Agent Controller - Integrated Agent Controller 화면에서 Enable 을 선택하고 OK 버튼을 누른다.

 


이제, 다음과 같이 LookAtMe 라는 Java 프로젝트를 만든다.


소스코드는 다음과 같다.

package lookatme;

public class LookAtMe extends Thread
{
    private long sleepTime;

    private int count;

    private static int getCount;

    LookAtMe(long sleepTime)
    {
        this.sleepTime = sleepTime;

        count = getCount();
    }

    private static int getCount()
    {
        synchronized (LookAtMe.class)
        {
            return ++getCount;
        }
    }

    public void run()
    {
        while (true)
        {
            System.out.printf("%d: %d\n", count, sleepTime);

            try
            {
                sleep(sleepTime);
            } catch (InterruptedException e)
            {
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args)
    {
        new LookAtMe((System.currentTimeMillis() % 3000) + 100).start();
        new LookAtMe((System.currentTimeMillis() % 3000) + 300).start();
        new LookAtMe((System.currentTimeMillis() % 3000) + 500).start();
        new LookAtMe((System.currentTimeMillis() % 3000) + 700).start();
        new LookAtMe((System.currentTimeMillis() % 3000) + 900).start();
    }
}


Window - Profile... 메뉴를 선택해서 다음 화면과 같이 LookAtMe 라는 Profile Configuration 을 만든다.


다음 화면과 같이 Monitor 탭에서 3가지 Profiling 모드중에서 하나를 선택할 수 있다. 우선은 Execution Time Analysis 를 선택해둔다.


위 화면에서 Profile 버튼을 누르거나, 다음 화면과 같이 Profile 실행버튼에서 LookAtMe Configuration 을 선택해서 Profiling 을 시작한다.


Profiling 하기 - Execution Time Analysis

이전에 만든 LookAtMe_remote 라는 Profile Configuration 을 실행하면 Profiling and Logging Perspective 로 바뀌면서 Monitor 탭에서 설정했던 대로 Execution Time Analysis 를 할 수 있다.

다음 화면은 Execution Time Analysis 를 한 직후의 모습이다.


왼쪽 트리에서 방금 실행한 Profile 세션에 있는 Execution Time Analysis 를 더블클릭하면 다음 화면과 같이 Session summary 를 볼 수 있다.


하단에 있는 탭을 이용하면 다른 정보들을 얻을 수 있는데, 우선, Filter 설정을 없애야 모든 정보를 볼 수 있으므로 다음 화면과 같이 Execution Statistics 에서 No Filter 설정을 한다.


다음 화면은 No Filter 설정이 된 Execution Statistics 이다.


다음 화면은 Call Tree 에서 LookAtMe(long) 생성자를 선택한 모습이다.


다음 화면은 Method Invacation Details 에서 LookAtMe(long) 생성자를 보는 모습이다.


다음 화면은 Method Invation 에서 getCount() 메소드를 보는 모습이다.


왼쪽 트리에서 방금 실행한 Profile 세션에 있는 Execution Time Analysis 를 더블클릭하지 않고, 오른쪽 마우스버튼을 이용하면 다른 형식으로 화면을 열 수도 있다.

다음 화면은 Execution Flow 를 보는 모습이다.


다음 화면은 UML2 Class Interactions 를 보는 모습이다.


UML2 Class Interactions 화면에서 빨간 색 부분에 마우스 포인터를 대면 다음 화면가 같이 실행시간이 표시된다. 빨간 색이 짙을 수록 실행시간이 긴 것을 나타낸다.


다음 화면은 Class Thread Interactions 화면을 보는 모습이다.


이 모든 결과는 현재 Profiling 되는 실시간 값이며, Profiling 을 중지하면 중지한 순간까지의 결과를 볼 수 있다.


Profiling 하기 - Memory Analysis

다음 화면은 LookAtMe Configuration 의 Monitor 탭에서 Memory Analysis 를 선택하고 실행한 뒤, lookatme.LookAtMe 클래스에 대한 Memory Statistics 를 보는 모습이다. (오른쪽 위에서 클래스 대신 패키지 기준으로 보도록 선택했다.)


다음 화면은 이전 화면에서 lookatme.LookAtMe 클래스를 더블클릭하거나 이 클래스가 선택된 상태에서 하단 탭의 Allocation Details 를 선택한 모습이다.


이 화면들에서 각 컬럼의 의미는 다음과 같다.

  • Live Instances
    • GC 되지 않고 살아있는 인스턴스
  • Active Size (bytes)
    • 해당 인스턴스 자체가 Heap 에서 차지하고 있는 용량
  • Total Instances
    • GC 된 인스턴스와 GC 되지 않은 인스턴스의 총합
  • Total Size (bytes)
    • 해당 인스턴스에 대해 GC 된 용량과 살아있는 용량을 합한 용량
  • Avg. Age
    • 한 번의 GC 에서 살아남으면 Age 가 하나 증가한다.

테스트 프로그램에 대해 Profiling 하기 - Thread Analysis

다음 화면은 LookAtMe_remote 의 Monitor 탭에서 Thread Analysis 를 선택하고 실행한 뒤, Thread Statistics 를 보는 모습이다. (상단의 Show Call Stack 버튼을 누른 상태이다.)


다음 화면은 Threads Visualizer 를 보는 모습이다.


 
 
     Eclipse, IAC, NetBeans, Profiler, TPTP, YourKit
     1   0

아이디 
비밀번호 
홈페이지 
비밀글   

 

<<이전 | 1 | 다음>>

mindwing's Blog is powered by Daum

 

티스토리 툴바