Android 12에서 도입된 Android 빌드 시스템은 자동 피드백 기반 최적화(AutoFDO)를 사용하여 청사진 빌드 규칙이 있는 네이티브 Android 모듈의 최적화를 지원합니다. AutoFDO는 샘플링 기반 최적화 기법으로, 시스템 바이너리의 런타임 동작을 캡처하므로 컴파일러의 성능 최적화를 개선하면서 바이너리 크기도 줄일 수 있습니다. AutoFDO는 AArch32 및 AArch64 아키텍처에서의 데이터 수집을 지원하지만 프로필은 아키텍처 전반에 걸쳐 사용할 수 있습니다.
AutoFDO는 계측 기반인 프로필 기반 최적화(PGO)의 후속 버전입니다.
다른 계측 기반 프로필과 비교할 때 AutoFDO에는 다음과 같은 추가 이점이 있습니다.
눈에 띄지 않는 데이터 수집: AutoFDO 프로필은 빌드 규칙을 수정하지 않고도 개발 기기나 사용자 기기에서 수집할 수 있습니다.
실제 사용 표현: AutoFDO는 프로필을 사용자 기기에서 수집한다고 가정하고 실제 사용 동작을 나타내지만 계측 PGO는 합성 수집 워크로드만 나타냅니다. 실제 사용과 완전히 일치하는 수집 워크로드를 만드는 것은 일반적으로 간단하지 않습니다.
AOSP는 대부분의 성능이 중요한 프로젝트를 위해 AutoFDO 프로필과 함께 제공됩니다. 프로필은 휴대전화 기기와 태블릿 기기에서 수집되고 일반적인 사용 패턴을 나타냅니다. 프로필은 toolchain/pgo-profiles/sampling
아래에 있습니다. AFDO는 AOSP에서 기본적으로 사용 설정됩니다.
청사진 빌드 규칙의 AutoFDO 사용 설정
청사진 빌드 규칙의 AutoFDO를 사용 설정하려면 공유 라이브러리나 바이너라 규칙에 afdo: true
를 추가하세요.
프로필 수집
AOSP와 함께 제공된 미리 번들로 묶은 프로필은 다음 특정 시나리오를 지원하지 않습니다.
- 추가 AutoFDO 프로젝트 포함
- 로컬에서 수정한 코드가 있음
- 시스템과 관련된 고유한 사용 패턴
이러한 시나리오 중 하나가 있다면 개발 기기나 사용자 기기에서 직접 프로필을 수집해야 합니다.
AutoFDO 프로필 수집을 위해 ARM 기기를 준비하는 방법에 관한 자세한 내용은 AutoFDO용 ETM 데이터 수집을 참고하세요.
자동 백그라운드 프로필 수집과 처리, 업로드를 사용 설정하는 방법에 관한 자세한 내용은 Profcollect를 참고하세요.
AutoFDO 프로필 분석
Android에서는 표준 LLVM AutoFDO 프로필을 사용합니다. AFDO 프로필은 LLVM의 llvm-profdata
도구를 사용하여 읽을 수 있습니다. afdo_summary.sh
스크립트(toolchain/pgo-profiles/scripts/afdo_summary.sh
)는 AutoFDO 프로필에 따라 가장 자주 실행된 기능을 자동 생성합니다.