Android LLVM 도구 모음팀입니다. Google의 최우선 과제 중 하나는 LLVM 생태계의 최적화 기법을 통해 Android 성능을 개선하는 것입니다. Google은 Android를 더 빠르고, 더 부드럽고, 더 효율적으로 만들기 위해 끊임없이 노력하고 있습니다. 최적화 작업의 대부분은 사용자 공간에서 이루어지지만 커널은 시스템의 핵심으로 남아 있습니다. 오늘은 자동 피드백 기반 최적화 (AutoFDO)를 Android 커널에 도입하여 사용자에게 상당한 성능 향상을 제공하는 방법을 공유하고자 합니다.
AutoFDO란 무엇인가요?
표준 소프트웨어 빌드 중에 컴파일러는 정적 코드 힌트를 기반으로 함수를 인라인할지, 조건문의 어떤 분기가 실행될 가능성이 높은지 등 수천 개의 작은 결정을 내립니다.이러한 휴리스틱은 유용하지만 실제 휴대전화 사용 중에 코드 실행을 항상 정확하게 예측하지는 않습니다.
AutoFDO는 실제 실행 패턴을 사용하여 컴파일러를 안내함으로써 이 문제를 해결합니다. 이러한 패턴은 실제 사용 중에 코드가 취하는 가장 일반적인 명령어 실행 경로를 나타내며, CPU의 분기 기록을 기록하여 캡처됩니다. 이 데이터는 플릿 기기에서 수집할 수 있지만 커널의 경우 인기 앱 상위 100개 실행과 같은 대표적인 워크로드를 사용하여 실험실 환경에서 합성합니다. Google에서는 샘플링 프로파일러를 사용하여 이 데이터를 캡처하고 코드의 어느 부분이 '핫' (자주 사용됨)이고 어느 부분이 '콜드'인지 식별합니다. 이러한 프로필로 커널을 다시 빌드하면 컴파일러가 실제 Android 워크로드에 맞게 훨씬 스마트한 최적화 결정을 내릴 수 있습니다.
이 최적화의 영향을 이해하려면 다음 주요 사실을 고려하세요.
- Android에서 커널은 CPU 시간의 약 40% 를 차지합니다.
- Google에서는 이미 AutoFDO를 사용하여 사용자 공간의 네이티브 실행 파일과 라이브러리를 최적화하여 콜드 앱 실행을 약 4% 개선하고 부팅 시간을 1% 단축했습니다.
실제 성능 개선
관리되는 실험실 환경의 프로필을 활용하여 주요 Android 측정항목에서 인상적인 개선이 이루어졌습니다. 이러한 프로필은 앱 크롤링 및 실행을 사용하여 수집되었으며 6.1, 6.6, 6.12 커널에서 Pixel 기기로 측정되었습니다.
가장 눈에 띄는 개선사항은 아래에 나열되어 있습니다. 이러한 커널 버전의 AutoFDO 프로필에 관한 자세한 내용은 android16-6.12 및 android15-6.6 커널의 각 Android 커널 저장소에서 확인할 수 있습니다.
이는 단순한 이론적 수치가 아닙니다. 이러한 개선사항은 최종 사용자에게 더 빠른 인터페이스, 더 빠른 앱 전환, 연장된 배터리 수명, 전반적으로 더 반응성이 뛰어난 기기를 제공합니다.
작동 방식: 파이프라인
Google의 배포 전략에는 프로필의 관련성을 유지하고 성능을 안정적으로 유지하기 위한 정교한 파이프라인이 포함됩니다.
1단계: 프로필 수집
내부 테스트 기기를 사용하여 사용자 공간 바이너리를 프로파일링하는 반면 일반 커널 이미지 (GKI)의 경우 관리되는 실험실 환경으로 전환했습니다. 프로파일링을 기기 출시 주기에서 분리하면 배포된 커널 버전과 관계없이 유연하고 즉각적인 업데이트가 가능합니다. 중요한 점은 테스트를 통해 이 실험실 기반 데이터가 실제 차량의 성능과 유사한 성능 향상을 제공한다는 점이 확인된다는 것입니다.
- 도구 및 환경: 최신 커널 이미지로 테스트 기기를 플래시하고 simpleperf를 사용하여 명령어 실행 스트림을 캡처합니다. 이 프로세스는 하드웨어 기능을 사용하여 분기 기록을 기록하며, 특히 Pixel 기기에서 ARM Embedded Trace Extension (ETE) 및 ARM Trace Buffer Extension (TRBE)를 활용합니다.
- 워크로드: Android 앱 호환성 테스트 모음 (C-Suite)에서 가장 인기 있는 앱 100개를 사용하여 대표적인 워크로드를 구성합니다. 가장 정확한 데이터를 캡처하기 위해 Google은 다음 사항에 중점을 둡니다.
- 앱 실행: 가장 눈에 띄는 사용자 지연 시간 최적화
- AI 기반 앱 크롤링: 연속적이고 진화하는 사용자 상호작용 시뮬레이션
- 시스템 전체 모니터링: 포그라운드 앱 활동뿐만 아니라 중요한 백그라운드 워크로드와 프로세스 간 통신도 캡처
- 검증: 이 합성 워크로드는 Google 내부 Fleet에서 수집된 실행 패턴과 85% 유사합니다.
- 타겟팅된 데이터: 이러한 테스트를 충분히 반복하면 가장 인기 있는 애플리케이션과의 실제 사용자 상호작용을 정확하게 나타내는 충실도 높은 실행 패턴을 포착할 수 있습니다. 또한 확장 가능한 프레임워크를 통해 추가 워크로드와 벤치마크를 원활하게 통합하여 지원 범위를 넓힐 수 있습니다.
2단계: 프로필 처리
원시 추적 데이터가 정리되고 효과적이며 컴파일러에 준비되도록 후처리합니다.
- 집계: 여러 테스트 실행 및 기기의 데이터를 단일 시스템 보기로 통합합니다.
- 변환: 원시 트레이스를 AutoFDO 프로필 형식으로 변환하고 필요에 따라 원치 않는 심볼을 필터링합니다.
- 프로필 트리밍: '콜드' 함수의 데이터를 삭제하여 표준 최적화를 사용할 수 있도록 프로필을 트리밍합니다. 이렇게 하면 거의 사용되지 않는 코드의 회귀가 방지되고 바이너리 크기가 불필요하게 증가하지 않습니다.
3단계: 프로필 테스트
배포 전에 프로필은 안정성 위험 없이 일관된 성능 향상을 제공할 수 있도록 엄격한 검증을 거칩니다.
- 프로필 및 바이너리 분석: 새로운 프로필의 콘텐츠 (핫 함수, 샘플 수, 프로필 크기 포함)를 이전 버전과 엄격하게 비교합니다. 또한 프로필을 사용하여 새 커널 이미지를 빌드하고 바이너리를 분석하여 텍스트 섹션의 변경사항이 예상과 일치하는지 확인합니다.
- 성능 확인: 새 커널 이미지에서 타겟팅된 벤치마크를 실행합니다. 이렇게 하면 이전 기준선에서 설정된 성능 개선사항이 유지됩니다.
지속적인 업데이트
시간이 지남에 따라 코드가 자연스럽게 '드리프트'되므로 정적 프로필은 결국 효과를 잃게 됩니다. 최고의 성능을 유지하기 위해 파이프라인을 지속적으로 실행하여 정기적으로 업데이트합니다.
- 정기 새로고침: 각 GKI 출시 전에 Android 커널 LTS 브랜치의 프로필을 새로고침하여 모든 빌드에 최신 프로필 데이터가 포함되도록 합니다.
- 향후 확장: 현재
android16-6.12및android15-6.6브랜치에 이러한 업데이트를 제공하고 있으며, 향후android17-6.18와 같은 최신 GKI 버전으로 지원을 확대할 예정입니다.
안정성 확보
프로필 기반 최적화와 관련해 자주 묻는 질문은 안정성 위험이 도입되는지 여부입니다. AutoFDO는 소스 코드의 로직을 변경하는 대신 함수 인라인 및 코드 레이아웃과 같은 컴파일러 휴리스틱에 주로 영향을 미치므로 커널의 기능적 무결성을 유지합니다. 이 기술은 이미 수년간 Android 플랫폼 라이브러리, ChromeOS, Google 자체 서버 인프라의 표준 최적화로 사용되어 대규모로 입증되었습니다.
일관된 동작을 보장하기 위해 '기본적으로 보수적' 전략을 적용합니다. 충실도가 높은 프로필에 포착되지 않은 함수는 표준 컴파일러 메서드를 사용하여 최적화됩니다. 이렇게 하면 커널의 '콜드' 또는 드물게 실행되는 부분이 표준 빌드에서와 정확히 동일하게 동작하여 성능 회귀나 특이 사례에서 예기치 않은 동작을 방지할 수 있습니다.
향후 계획
현재 android16-6.12 및 android15-6.6 브랜치에 AutoFDO를 배포하고 있습니다. 이번 초기 출시 외에도 기술을 더욱 개선할 수 있는 여러 가지 유망한 방법이 있습니다.
- 도달범위 확대: 현재
aarch64지원을 넘어 최신 GKI 커널 버전과 추가 빌드 타겟에 AutoFDO 프로필을 배포할 예정입니다. - GKI 모듈 최적화: 현재 최적화는 기본 커널 바이너리 (
vmlinux)에 중점을 두고 있습니다. AutoFDO를 GKI 모듈로 확장하면 더 큰 부분의 커널 하위 시스템에 성능 이점을 가져올 수 있습니다. - 공급업체 모듈 지원: 드라이버 개발 키트 (DDK)를 사용하여 빌드된 공급업체 모듈의 AutoFDO 지원에도 관심이 있습니다. 빌드 시스템 (Kleaf)과 프로파일링 도구 (simpleperf)에서 이미 지원되므로 공급업체는 이러한 동일한 최적화 기법을 특정 하드웨어 드라이버에 적용할 수 있습니다.
- 더 넓은 프로필 범위: 더 광범위한 중요한 사용자 여정 (CUJ)에서 프로필을 수집하여 최적화할 수 있습니다.
Android 커널에 AutoFDO를 도입함으로써 OS의 기반이 사용자가 매일 기기를 사용하는 방식에 맞게 최적화되도록 합니다.
계속 읽기
-
제품 소식
모든 개발자의 AI 워크플로와 요구사항은 고유하며, AI가 개발에 어떤 도움을 줄지 선택할 수 있는 것이 중요합니다. 1월에는 Android 스튜디오에서 AI 기능을 구동하는 데 로컬 또는 원격 AI 모델을 선택할 수 있는 기능이 도입되었습니다.
Matthew Warner • 전문 길이: 2분
-
제품 소식
이제 Android 스튜디오 Panda 3가 안정화되어 프로덕션에서 사용할 수 있습니다. 이번 출시를 통해 AI 기반 워크플로를 더욱 세부적으로 제어하고 맞춤설정할 수 있어 고품질 Android 앱을 그 어느 때보다 쉽게 빌드할 수 있습니다.
Matt Dyor • 3분 읽기
-
제품 소식
Google은 가장 강력한 AI 모델을 주머니 속 Android 기기에 직접 제공하기 위해 최선을 다하고 있습니다. 오늘 최신 최첨단 개방형 모델인 Gemma 4의 출시를 발표하게 되어 매우 기쁩니다.
Caren Chang, David Chou • 3분 읽기
소식 받아 보기
Android 개발 관련 최신 정보를 이메일로 받아 보세요.