13. 프로파일링
프로파일링은 여러 접근 방식이 있으며, 크게 두가지가 일반적입니다.
- 실행
- 할당
#
프로파일링 개요JVM 프로파일링/모니터링 툴은 보통 저수준의 instrumentation을 이용해서 작동하며, 수집한 데이터는 그래픽 콘솔에 피드백하거나 추후 분석 용도로 로그에 저장합니다.
다음의 의미를 잘 인지하는 것이 좋습니다.
- 모니터링 툴 : 시스템과 그 현재 상태를 살핍니다.
- 경고 시스템 : 비정상적/변칙적인 움직임을 감지합니다.
- 프로파일러 : 실행중인 애플리케이션의 심층 정보를 제공합니다.
프로파일링의 목표는 리팩터링 및 성능 최적화 대상 코드를 식별하는 것입니다. 또한 성능 엔지니어는 프로파일링을 수행하기 전에 성능 문제를 밝혀내야 합니다.
#
샘플링과 세이프포인팅 편향- 실행 프로파일링에서 기억해야하는 사실은 실행중인 코드의 자료점을 대부분 샘플링을 통해서 획득합니다.
- 프로파일러는 사용하기 전까지 상세한 정보로 가득 차있어야합니다.
대부분의 샘플링은 세이프포인트에서 일어나는 점이 문제가 됩니다. 이를 세이프포인트 편향이라고 합니다.
- 모든 스레드는 샘플을 뜨기 전에 세이프포인트에 다다라야 합니다.
- 세이프포인트 지점에 있는 애플리케이션 상태만 샘플링할 수 있습니다.
다만 세이프포인트를 여러 곳 찍는 경우에는 성능이 낮아질 수 있습니다.
#
개발자용 프로파일링 툴- VisualVM 프로파일러
- JProfiler
- YourKit
- JFR/JMC
- 운영 툴
- 레드햇 서모스탯
- 뉴 렐릭
- jClarity 일루미네이트
#
최신 프로파일러기존 프로파일러보다 성능 수치가 더 정확하고 더 나은 통찰력을 제시하는 최신 오픈 소스 툴도 있습니다.
- 어니스트 프로파일러
- 다른 대부분의 프로파일러에 있는 세이프포인트 편향을 없앱니다.
- 오버헤드가 아주 낮은 상태로 작동시킵니다.
#
할당 프로파일링전체 프로파일링에서 실행 프로파일링이 차지하는 비중이 크기는 하지만 할당 파일링도 있습니다. 할당 프로파일링은 애플리케이션은 애플리케이션의 할당 동작을 살피는 표준 메모리 프로파일링입니다.
- VisualVM
- YourKit
- TLAB
- Async 프로파일러
#
힙 덤프 분석힙 덤프 분석도 할당 프로파일링 기법 중 하나입니다. 전체 힙의 스탭샷을 툴로 볼 수 있으며, 개수와 타입 등의 중요한 팩트와 객체 그래프의 형상/구조를 파악합니다.
- YourKit도 메모리 스냅샷 캡처 기능을 hprof 및 전용 포맷등을 지원합니다.
- JMC/JFR 할당 뷰도 사용할 수 있습니다.