반응형

제목: Aprobe: 비침투형 소프트웨어 계측 프레임워크(Aprobe: A Framework for Non-intrusive Software Instrumentation)

저자: Oliver Cole, OC Systems

문서유형: 툴 벤더 브로셔( 10페이지), 2009

 

애플리케이션 내부에 계측 코드를 직접 삽입하지 않는 비침투형 탐사 방식(Non-invasive, probe-based instrumentation)Aprobe 계측 프레임워크에 대하여 설명한 문서



소프트웨어 계측(Software instrumentation)

  • 애플리케이션을 디버깅하고 튜닝하는데 필요한 정보(, function 패러미터 값, 타이밍 통계치)를 기록하기 위해 애플리케이션에 개발자가 계측 코드를 삽입한다. 이러한 계측 코드는 완성된 최종 애플리케이션의 일부는 아니며, 애플리케이션을 디버깅 하거나, 병목 부분(bottlenecks)을 찾거나, 기타 문제 해결에 사용하기 위한 목적의 코드이다.
  • 경험 많은 개발 팀은 애플리케이션을 설계 및 구현하는 중에 계측 코드(instrumentation code)를 체계적으로 삽입한다. 컴파일 타임 플래그는 완성된 실행 파일 및 지원 라이브러리로부터 계측 코드를 제외시키고, 런 타임 플래그는 특정 소프트웨어 계측을 작동하게 하거나(turn on) 작동 중지시킨다(turn off).
  • 기 삽입된 계측 코드로 모든 문제를 디버깅 할 수는 없는데(, 다른 시스템과 통합으로 인한 문제가 생긴 경우), 개발 사이클의 후반이나 클라이언트 사이트에 이미 배포된 상황에서 계측 코드를 애플리케이션에 추가하는 것은 여러 문제를 수반한다. Aprobe는 이런 상황에서 활용 가능한 소프트웨어 계측 솔루션을 제공한다.


Aprobe 계측 프레임워크(비침투, 탐사형 계측)

  • AprobeProbe 형태로 애플리케이션에 계측 코드를 추가할 수 있는 소프트웨어 계측 프레임워크로서 개발 단계뿐만 아니라 애플리케이션이 이미 운영 환경에서 작동하고 있는 경우에도 사용 가능하다. 또한 계측 대상 애플리케이션이 소스 코드가 제공되지 않는 제 3자 소프트웨어와 연계하는 경우에도 사용 가능하다.
  • 계측을 위한 Probe 프로그램은 C 또는 Java로 작성한다. Aprobe는 추적(tracing), timing, 메모리 누수 발견(detecting memory leaks), 데이터 로깅(logging data) 등의 일련의 계측 작업을 수행하는 표준 Probe들을 제공한다(개발자가 Probe를 직접 작성하거나 제공되는 표준 Probe들을 커스토마이징 해서 사용 가능).
  • 계측 Probe의 소스 파일은 애플리케이션의 소스 파일과 별개이며, Probe의 기계어는 애플리케이션의 라이브러리가 아닌 특수 라이브러리(special-purpose libraries)에 상주한다.
  • Aprobe는 런 타임에 애플리케이션이 메모리상에 있을 때 Probe를 호출하는 call을 애플리케이션에 삽입하고, 이렇게 호출된 Probe는 애플리케이션의 통합된 일부분인 것처럼 실행된다.
  • Probe는 제 3자 코드(third-party code), 공유 라이브러리(shared libraries), 동적 컴포넌트(dynamic components), 자바 가상 머신, 컴파일러, 애플리케이션 서버, 브라우저 등을 포함한 애플리케이션의 모든 부분에 접근(access) 가능하다. 최신 버전인 Aprobe5는 리녹스 커널의 계측도 가능하게 한다.


Aprobe 작동 절차

     계측 대상 애플리케이션이 돌아가고 있는 머신 상에 Aprobe를 인스톨 한다.

     메모리에 로딩된 애플리케이션이 실행을 시작하기 전에 Aprobe가 해당 애플리케이션을 가로챈다.

     계측 Probe들을 호출하는 CALL 명령(기계어)을 메모리 상의 애플리케이션 이미지(RAM image)의 원하는 곳에 삽입한다(아래 그림 참조). 삽입된 기계어 CALL은 기계어 function(사전에 컴파일되고 링크된 Probe 소스 코드)을 호출하여 Probe 프로그램의 body를 실행한다. Aprobe는 애플리케이션의 소스 파일, 실행 파일, 바이트 코드 파일은 변경하지 않는다.

     Probe는 데이터 로깅을 통해 계측 결과를 보고한다(로깅으로 인해 계측 대상 애플리케이션의 속도가 약간 느려질 수 있음). Aprobe는 로깅을 지원하는 ‘log’ 지시어를 제공하며, 로그 파일의 최대 사이즈나 개수도 조정 가능하다.




반응형

+ Recent posts