Skip to main content

13. 프로파일링

프로파일링은 여러 접근 방식이 있으며, 크게 두가지가 일반적입니다.

  • 실행
  • 할당

프로파일링 개요#

JVM 프로파일링/모니터링 툴은 보통 저수준의 instrumentation을 이용해서 작동하며, 수집한 데이터는 그래픽 콘솔에 피드백하거나 추후 분석 용도로 로그에 저장합니다.

다음의 의미를 잘 인지하는 것이 좋습니다.

  • 모니터링 툴 : 시스템과 그 현재 상태를 살핍니다.
  • 경고 시스템 : 비정상적/변칙적인 움직임을 감지합니다.
  • 프로파일러 : 실행중인 애플리케이션의 심층 정보를 제공합니다.

프로파일링의 목표는 리팩터링 및 성능 최적화 대상 코드를 식별하는 것입니다. 또한 성능 엔지니어는 프로파일링을 수행하기 전에 성능 문제를 밝혀내야 합니다.


샘플링과 세이프포인팅 편향#

  • 실행 프로파일링에서 기억해야하는 사실은 실행중인 코드의 자료점을 대부분 샘플링을 통해서 획득합니다.
  • 프로파일러는 사용하기 전까지 상세한 정보로 가득 차있어야합니다.

대부분의 샘플링은 세이프포인트에서 일어나는 점이 문제가 됩니다. 이를 세이프포인트 편향이라고 합니다.

  • 모든 스레드는 샘플을 뜨기 전에 세이프포인트에 다다라야 합니다.
  • 세이프포인트 지점에 있는 애플리케이션 상태만 샘플링할 수 있습니다.

다만 세이프포인트를 여러 곳 찍는 경우에는 성능이 낮아질 수 있습니다.

개발자용 프로파일링 툴#

  • VisualVM 프로파일러
  • JProfiler
  • YourKit
  • JFR/JMC
  • 운영 툴
    • 레드햇 서모스탯
    • 뉴 렐릭
    • jClarity 일루미네이트

최신 프로파일러#

기존 프로파일러보다 성능 수치가 더 정확하고 더 나은 통찰력을 제시하는 최신 오픈 소스 툴도 있습니다.

  • 어니스트 프로파일러
    • 다른 대부분의 프로파일러에 있는 세이프포인트 편향을 없앱니다.
    • 오버헤드가 아주 낮은 상태로 작동시킵니다.

할당 프로파일링#

전체 프로파일링에서 실행 프로파일링이 차지하는 비중이 크기는 하지만 할당 파일링도 있습니다. 할당 프로파일링은 애플리케이션은 애플리케이션의 할당 동작을 살피는 표준 메모리 프로파일링입니다.

  • VisualVM
  • YourKit
  • TLAB
  • Async 프로파일러

힙 덤프 분석#

힙 덤프 분석도 할당 프로파일링 기법 중 하나입니다. 전체 힙의 스탭샷을 툴로 볼 수 있으며, 개수와 타입 등의 중요한 팩트와 객체 그래프의 형상/구조를 파악합니다.

  • YourKit도 메모리 스냅샷 캡처 기능을 hprof 및 전용 포맷등을 지원합니다.
  • JMC/JFR 할당 뷰도 사용할 수 있습니다.
Last updated on