Android 12'de kullanıma sunulan Android derleme sistemi, Otomatik Geri Bildirim Yönlü Optimizasyon (AutoFDO)'u kullanarak plan derleme kurallarına sahip yerel Android modüllerinin optimize edilmesini destekler. AutoFDO, örneklemeye dayalı bir optimizasyon tekniğidir. AutoFDO, sistem ikililerinin çalışma zamanı davranışını yakalar. Böylece derleyiciler, ikili boyutunu küçültmenin yanı sıra daha iyi performans optimizasyonları yapabilir. Android, X86, X86_64, ARM ve ARM64 cihazlardan profil toplamayı destekler. Ancak profiller farklı mimarilerde kullanılabilir.
AutoFDO, enstrümantasyon tabanlı Profil Kılavuzlu Optimizasyon'un (PGO) halefidir.
Diğer enstrümantasyon tabanlı profillere kıyasla AutoFDO'nun ek avantajları şunlardır:
Rahatsız edici olmayan veri toplama: AutoFDO profilleri, kural oluşturma işleminde herhangi bir değişiklik yapılmadan geliştirme veya kullanıcı cihazlarından toplanabilir.
Gerçek dünyadaki kullanım temsili: AutoFDO, profillerin kullanıcı cihazlarından toplandığı varsayılarak gerçek dünyadaki kullanım davranışını temsil eder. Ölçüm PGO ise yalnızca sentetik toplama iş yükünü temsil eder. Gerçek kullanımla mükemmel şekilde eşleşen bir koleksiyon iş yükü oluşturmak genellikle kolay değildir.
AOSP, performans açısından kritik olan çoğu proje için AutoFDO profilleriyle birlikte gönderilir. Telefon ve tablet cihazlardan toplanan bu profiller, cihazların genel kullanım kalıplarını temsil eder. Profiller toolchain/pgo-profiles/sampling
altında bulunur. AFDO, AOSP'de varsayılan olarak etkindir.
Bir taslak derleme kuralı için AutoFDO'yu etkinleştirme
Şablon derleme kuralları için AutoFDO'yu etkinleştirmek üzere paylaşılan kitaplığa veya ikili kurala afdo: true
ekleyin.
Profil toplama
AOSP ile birlikte sağlanan önceden paketlenmiş profil aşağıdaki senaryoları desteklemez:
- Ek AutoFDO projelerinin dahil edilmesi
- Yerel olarak değiştirilmiş kod varlığı
- Sisteminizle ilişkili benzersiz kullanım kalıpları
Bu senaryolardan biriyle karşı karşıya kalırsanız profilleri doğrudan geliştirme veya kullanıcı cihazlarından toplamanız gerekir.
ARM cihazların AutoFDO profillerini toplamaya hazırlanması hakkında ayrıntılı talimatlar için AutoFDO için ETM verileri toplama başlıklı makaleyi inceleyin.
X86 cihazları AutoFDO profillerini toplamaya hazırlama hakkında ayrıntılı talimatlar için AutoFDO için LBR verilerini toplama başlıklı makaleyi inceleyin.
Otomatik arka planda profil toplama, işleme ve yükleme özelliğini etkinleştirme hakkında bilgi edinmek için Profcollect başlıklı makaleyi inceleyin.
AutoFDO profillerini analiz etme
Android, standart LLVM AutoFDO profillerini kullanır. AFDO profilleri, LLVM'in llvm-profdata
aracı kullanılarak okunabilir. afdo_summary.sh
komut dosyası (toolchain/pgo-profiles/scripts/afdo_summary.sh
), AutoFDO profiline göre en sık çalıştırılan işlevleri otomatik olarak oluşturur.