Otomatik Geri Bildirim Yönlü Optimizasyon (12 veya daha yeni sürümler)

Android 12'de kullanıma sunulan Android derleme sistemi, Automatic Feedback-Directed Optimization (AutoFDO) kullanarak plan derleme kurallarına sahip yerel Android modüllerini optimize etmeyi destekler. AutoFDO, örneklemeye dayalı bir optimizasyon tekniğidir. AutoFDO, sistem ikililerinin çalışma zamanı davranışını yakalayarak derleyicilerin daha iyi performans optimizasyonları yapmasını sağlarken ikili boyutunu da küçültür. Android, profiller mimariler arasında kullanılabilse de X86, X86_64, ARM ve ARM64 cihazlardan profil toplamayı destekler.

AutoFDO, enstrümantasyon tabanlı Profile-Guided Optimization (PGO) yönteminin yerini almıştır.

AutoFDO, diğer enstrümantasyon tabanlı profillere kıyasla şu ek avantajlara sahiptir:

  • Rahatsız etmeyen veri toplama: AutoFDO profilleri, derleme kurallarında 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 ederken enstrümantasyon PGO yalnızca sentetik toplama iş yükünü temsil eder. Gerçek dünya kullanımına mükemmel şekilde uyan bir koleksiyon iş yükü oluşturmak genellikle kolay değildir.

AOSP, performans açısından kritik projelerin çoğu için AutoFDO profilleriyle birlikte gelir. Profiller, telefon ve tablet cihazlardan toplanmış olup bu cihazların genel kullanım şekillerini temsil etmektedir. Profiller, toolchain/pgo-profiles/sampling altında yer alır. AFDO, AOSP'de varsayılan olarak etkindir.

Bir plan derleme kuralı için AutoFDO'yu etkinleştirme

Blueprint derleme kuralları için AutoFDO'yu etkinleştirmek üzere paylaşılan kitaplığa veya ikili programa afdo: true ekleyin.

Profilleri toplama

AOSP ile birlikte gelen önceden paketlenmiş profil, aşağıdaki belirli senaryoları desteklemez:

  • Ek AutoFDO projelerinin dahil edilmesi
  • Yerel olarak değiştirilmiş kodun varlığı
  • Sisteminizle ilişkili benzersiz kullanım kalıpları

Bu senaryolardan birine sahipseniz profilleri doğrudan geliştirme veya kullanıcı cihazlarından toplamanız gerekir.

ARM cihazları AutoFDO profillerini toplama için hazırlama hakkında ayrıntılı talimatlar için AutoFDO için ETM verilerini toplama başlıklı makaleyi inceleyin.

X86 cihazları AutoFDO profillerini toplama için hazırlama hakkında ayrıntılı talimatlar için AutoFDO için LBR verilerini toplama başlıklı makaleyi inceleyin.

Otomatik arka plan profili toplama, işleme ve yükleme işlemlerini 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'nin 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 yürütülen işlevleri otomatik olarak oluşturur.