AI로 프로필 분석

ProfilingManager 프로필은 표준 Perfetto 형식을 사용하고 PerfettoSQL로 쿼리할 수 있으므로 AI 코딩 에이전트를 Perfetto AI 기술과 페어링하여 Perfetto UI에서 타임라인을 수동으로 탐색하거나 Perfetto 표준 라이브러리에 대해 맞춤 쿼리를 작성하는 대신 워크스페이스에서 직접 근본 원인 분석을 자동화할 수 있습니다.

  1. 프로필 로드: 에이전트가 Perfetto의 trace_processor를 사용하여 수집된 프로필을 엽니다.
  2. 진단 쿼리 실행: Perfetto AI 스킬의 안내에 따라 에이전트는 표준 라이브러리 모듈(예: 버벅거림의 경우 android.frames.timeline, 메모리 누수의 경우 android.memory.heap_graph.dominator_tree)을 쿼리하고 쿼리를 반복적으로 미세 조정합니다.
  3. 소스 코드와 상호 연관: 에이전트는 커스텀 trace 슬라이스, 샘플링된 호출 스택 또는 프로필의 유지 클래스 이름을 Kotlin 또는 Java 소스 파일에 직접 매핑하고 수정사항을 제안합니다.

Perfetto AI 스킬 설정

오픈소스 Perfetto AI 기술은 코딩 에이전트에게 trace_processor를 실행하고 PerfettoSQL을 작성하며 Android 메모리 및 CPU 분석을 위한 가이드 워크플로를 따르는 방법을 알려줍니다. 각 설치에는 trace_processor 래퍼가 번들로 포함되므로 trace_processor를 별도로 설치할 필요가 없습니다.

  • AI로 설치: AI 코딩 에이전트에서 다음 프롬프트를 실행합니다.

    Following instructions from https://perfetto.dev/docs/getting-started/using-ai set up the Perfetto AI skill to be usable by any agent
    
  • 수동 설치: 에이전트(예: Claude Code, Codex, Cursor, Antigravity, OpenCode)에 대해 Perfetto에서 AI 사용의 설정 안내를 따릅니다.

워크플로 예시

캡처된 프로필을 하나 이상 작업공간에 배치하고 AI 에이전트에게 조사를 요청합니다. 단일 프로필을 분석하여 개별 문제를 진단하거나 여러 프로필을 전달하여 패턴과 회귀를 일괄적으로 비교할 수 있습니다.

Java 힙 덤프 및 OOM 분석

PROFILING_TYPE_JAVA_HEAP_DUMP를 사용하여 직접 캡처하거나 TRIGGER_TYPE_OOM 트리거를 통해 자동으로 캡처한 Java 힙 덤프를 제공하면 Perfetto AI 기술을 사용하는 AI 에이전트가 다음을 식별하는 데 도움을 줄 수 있습니다.

  • 메모리 누수: 소멸된 Activity 또는 Fragment 인스턴스와 같이 회수되어야 할 때 GC 루트에서 계속 연결 가능한 객체입니다.
  • 과도하게 중복된 객체: 인스턴스 수가 예상보다 많아 전체적으로 힙의 많은 부분을 사용하는 클래스입니다.
  • 메모리 비효율성: 과도한 크기의 캐시, 중복 데이터 구조 또는 불균형한 양의 메모리를 유지하는 단일 지배자 객체

OutOfMemoryError 힙 덤프를 조사하고 앱의 소스 코드와 연결하려면 다음과 같은 프롬프트를 실행합니다.

Analyze the Perfetto OOM heap dump at </path/to/profile>, which corresponds to
the codebase located at </path/to/codebase> using the Perfetto AI skill and find
the root cause of the OutOfMemoryError.

도미네이터 트리 보관 경로, 소스 코드 근본 원인, 제안된 수정사항을 포함하여 이 프롬프트가 생성하는 보고서의 전체 예시를 보려면 우수사례: OOM 비정상 종료 디버깅의 AI 에이전트로 OOM 조사 자동화를 참조하세요.

시스템 트레이스 및 ANR 분석

PROFILING_TYPE_SYSTEM_TRACE를 사용하여 직접 캡처하거나 TRIGGER_TYPE_ANR 트리거를 통해 자동으로 캡처한 시스템 트레이스를 제공하면 Perfetto AI 기술을 사용하는 AI 에이전트가 다음을 식별하는 데 도움을 줄 수 있습니다.

  • 기본 스레드 작업 차단: ANR 기준점 전에 UI 스레드가 입력 이벤트를 처리하거나 프레임을 그리지 못하게 하는 장기 실행 트레이스 슬라이스 또는 동기 호출입니다.
  • 스레드 상태 병목 현상: 기본 스레드가 Sleeping(예: 네트워크 I/O 차단 또는 Thread.sleep 시간 제한), Blocked(잠금 경합) 또는 Runnable(CPU 예약 지연) 상태에서 멈춘 간격입니다.
  • 기본 스레드 CPU 급증: 백그라운드 스레드 대신 UI 스레드에서 직접 실행되는 비용이 많이 드는 계산 또는 타이트 루프입니다.

ANR 시스템 트레이스를 조사하고 이를 앱의 소스 코드와 연결하려면 다음과 같은 프롬프트를 실행합니다.

Analyze the Perfetto system trace at </path/to/trace.perfetto-trace>, which
corresponds to an ANR trace, and find the root cause of the ANR using the
Perfetto AI skill. The codebase is located at </path/to/codebase>.

기본 스레드 슬라이스 분석, thread_state 간격 재구성, 소스 코드 매핑을 포함하여 이 프롬프트가 생성하는 보고서의 전체 예시를 보려면 우수사례: ANR 디버그에서 AI 에이전트로 ANR 조사 자동화를 참고하세요.