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ına ve ikili boyutunu küçültmesine olanak tanı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.

Diğer enstrümantasyona dayalı profillerle karşılaştırıldığında AutoFDO'nun şu ek avantajları vardır:

  • 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ın 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 bulunur. AFDO, AOSP'de varsayılan olarak etkindir.

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

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

Profilleri toplama

AOSP ile birlikte verilen önceden paketlenmiş profil, şu 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şlemlerinin nasıl etkinleştirileceği 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.