Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

perfetto

perfettoAndroid 디버그 브리지(ADB)를 통해 Android 기기에서 성능 정보를 수집할 수 있는 도구입니다. perfetto는 다양한 소스를 사용하여 기기에서 다음과 같은 성능 트레이스를 수집합니다.

  • ftrace: 커널의 정보
  • atrace: 서비스 및 앱의 사용자 공간 주석
  • heapprofd: 서비스 및 앱의 네이티브 메모리 사용량 정보

이 페이지에서는 perfetto를 호출하여 원하는 출력을 생성하도록 구성하는 방법을 설명합니다.

구문

이 섹션에서는 ADB를 사용하여 perfetto를 호출하고 트레이스를 생성하는 방법을 설명합니다.

데이터 소스 선택

perfetto에는 트레이스를 기록하는 데 사용하는 데이터 소스를 결정하는 다음 두 모드가 포함됩니다.

  • 라이트 모드: 특히 atrace 및 ftrace와 같은 데이터 소스의 하위 집합만 선택할 수 있습니다. 하지만 systrace와 유사한 인터페이스를 제공합니다.
  • 일반 모드: 프로토콜 버퍼에서 구성을 가져오며 atrace 및 ftrace와는 다른 데이터 소스를 사용하여 perfetto의 기능을 훨씬 더 많이 활용할 수 있습니다.

이 섹션에서는 perfetto가 위에 설명된 각 모드를 사용해 트레이스를 생성하는 데 필요한 구문을 설명합니다.

일반 옵션

다음 표는 두 모드 중 하나에서 perfetto를 사용할 때 제공되는 옵션 목록입니다.

옵션 설명
--background | -d Perfetto는 명령줄 인터페이스를 즉시 종료하고 백그라운드에서 트레이스를 계속 기록합니다.
--out OUT_FILE | -o OUT_FILE 출력 트레이스 파일의 원하는 경로, 즉 stdout에 -를 지정합니다. perfetto는 위 플래그에 설명된 파일에 출력을 씁니다. 출력 형식은 AOSP trace.proto에 정의된 형식으로 컴파일됩니다.
--dropbox TAG 지정한 태그를 사용하여 DropBoxManager API를 통해 트레이스를 업로드합니다.
--no-guardrails 테스트 중 --dropbox 플래그를 사용 설정하는 경우 과도한 리소스 사용 방지를 사용 중지합니다.
--reset-guardrails 보호 대책 및 종료의 지속적인 상태를 재설정합니다(테스트용).
--query 서비스 상태를 쿼리하고 사람이 읽을 수 있는 텍스트로 인쇄합니다.
--query-raw --query와 비슷하지만 tracing_service_state.proto.의 원시 Proto 인코딩 바이트를 인쇄합니다.
--help | -h perfetto 도구의 도움말 텍스트를 출력합니다.

라이트 모드

라이트 모드에서 perfetto를 사용하는 일반적인 구문은 다음과 같습니다.

 adb shell perfetto [ --time TIMESPEC ] [ --buffer SIZE ] [ --size SIZE ]
             [ ATRACE_CAT | FTRACE_GROUP/FTRACE_NAME | FTRACE_GROUP/* ]...

다음 표는 라이트 모드에서 perfetto를 사용할 때 제공되는 옵션 목록입니다.

옵션 설명
--time TIME[s|m|h] | -t TIME[s|m|h] 트레이스 기간을 초, 분 또는 시간 단위로 지정합니다. 예를 들어 --time 1m은 트레이스 기간을 1분으로 지정합니다. 기본 기간은 10초입니다.
--buffer SIZE[mb|gb] | -b SIZE[mb|gb] 링 버퍼 사이즈를 메가바이트(MB) 또는 기가바이트(GB) 단위로 지정합니다. 기본 매개변수는 --buffer 32mb입니다.
--size SIZE[mb|gb] | -s SIZE[mb|gb] 최대 파일 크기를 MB 또는 GB 단위로 지정합니다. 기본적으로 perfetto는 메모리 내의 링 버퍼만 사용합니다.

그다음에 이벤트 지정자 목록을 사용합니다.

이벤트 설명
ATRACE_CAT 트레이스를 기록할 atrace 카테고리를 지정합니다. 예를 들어 다음 명령어는 atrace를 사용하여 창 관리자를 추적합니다.

    adb shell perfetto --out FILE wm
    

기타 카테고리를 기록하려면 atrace 카테고리 목록을 참조하세요.

FTRACE_GROUP/FTRACE_NAME 트레이스를 기록할 ftrace 이벤트를 지정합니다. 예를 들어 다음 명령어는 sched/sched_switch 이벤트를 추적합니다.

      adb shell perfetto --out FILE sched/sched_switch
      

일반 모드

일반 모드에서 perfetto를 사용하는 일반적인 구문은 다음과 같습니다.

 adb shell perfetto [ --txt ] --config CONFIG_FILE

다음 표는 일반 모드에서 perfetto를 사용할 때 제공되는 옵션 목록입니다.

옵션 설명
--config CONFIG_FILE | -c CONFIG_FILE 구성 파일의 경로를 지정합니다. 일반 모드에서는 일부 구성이 구성 프로토콜 버퍼에 인코딩될 수 있습니다. 이 파일은 AOSP trace_config.proto에 정의된 프로토콜 버퍼 스키마를 준수해야 합니다.

AOSP data_source_config.proto에 정의된 대로 TraceConfigDataSourceConfig 멤버를 사용하여 데이터 소스를 선택하고 구성합니다.

--txt 구성 파일을 pbtxt로 파싱하도록 perfetto에 지시합니다. 이 플래그는 실험용이므로 프로덕션에 사용 설정하지 않는 것이 좋습니다.

지원되는 데이터 소스

이 섹션에서는 perfetto에서 트레이스를 생성하는 데 사용하는 다양한 소스를 설명합니다.

FTrace

ftrace 데이터 소스를 사용하면 perfetto가 커널에서 이벤트를 가져올 수 있습니다.

DataSourceConfig에서 ftrace_config를 설정하여 이 소스를 사용 설정할 수 있습니다.

사용 설정할 수 있는 이벤트는 다음과 같습니다.

  • 일정 예약 활동:

    • sched/sched_switch
    • sched/sched_wakeup
    • sched/sched_wakeup_new
    • sched/sched_process_exec
    • sched/sched_process_exit
    • sched/sched_process_fork
    • sched/sched_process_free
    • sched/sched_process_hang
    • sched/sched_process_wait
  • 파일 시스템 이벤트:

  • ATrace 이벤트

기기, OS 버전, 커널에 따라 더 많은 이벤트를 사용할 수 있습니다. 자세한 내용은 구성 proto를 참조하세요.

프로세스 통계

프로세스 통계 데이터 소스를 사용하면 시스템 및 개별 프로세스에 관한 폴링 카운터를 가져올 수 있습니다.

DataSourceConfig에서 process_stats_configsys_stats_config를 설정하여 이 소스를 사용 설정할 수 있습니다.

profetto에서 생성되는 데이터는 다음과 같습니다.

기기, OS 버전, 커널에 따라 더 많은 이벤트를 사용할 수 있습니다. 자세한 내용은 sys_statsprocess_stats의 구성 proto를 참조하세요.

Heapprofd

Heapprofd를 사용하면 네이티브 메모리 사용의 원인을 샘플링할 수 있습니다.

DataSourceConfig에서 heapprofd_config를 설정하여 이 소스를 사용 설정할 수 있습니다.

ProfilePackets가 생성됩니다. 여기에는 callstack의 자바 프레임이 포함됩니다.

heapprofd를 사용하는 방법을 자세히 알아보려면 perfetto.dev를 참조하세요.

기타 소스

기기, OS 버전, 커널에 따라 더 많은 데이터 소스를 사용할 수 있습니다. 자세한 내용은 데이터 소스 구성 proto를 참조하세요.

perfetto를 자세히 알아보려면 perfetto.dev를 참조하세요.