Güç istatistikleri HAL

Cihaz alt sisteminin gücü genellikle laboratuvar ortamında ölçülür ve kaydedilir. Bu ölçümler, ekran açıkken veya cihaz boşta güç durumundayken gibi çeşitli kararlı durum koşulları için yapılır. Bu yöntem, sabit güç tüketimine sahip alt sistemler veya laboratuvar ortamlarında kolayca ölçülebilen koşullarda işe yarar ancak ekranda video gösterildiği gibi belirli kullanım alanları için uygun değildir.

IPower.hal 1.0, güç ipuçları iletme ve alt sistem uyku durumu metrikleri hakkında kümülatif verileri raporlama için bir arayüz sağlar. Android 10 ve sonraki sürümlerde kümülatif istatistik raporlama işlevi, IPowerStats.hal güç istatistikleri toplama API'lerinde bulunur ve cihaz üzerindeki enerji kullanımı verilerini almanızı sağlar. Bu, işlevlerin daha net bir şekilde ayrılması için IPower.hal arayüzünün kümülatif istatistik toplama bölümünün yerini alır.

IPowerStats hizmet okumaları periyodik değildir. Bunlar, pil seviyesi% 1 düştüğünde olduğu gibi önemli anlarda gerçekleşir. Pil tüketimi düşük olduğunda ölçümler daha seyrek, yüksek olduğunda daha sık yapılır. Veriler sunuculara geri gönderilebilir ve analiz ve önceliklendirme için hata raporlarında kullanılabilir. Bu, güç tüketimini azaltma ve pil ömrünü uzatma yönündeki çalışmaları destekler.

IPower.hal ve IPowerStats.hal

Android 10'da hem IPower.hal hem de IPowerStats.hal arayüzleri kullanılabilir ancak IPower.hal istatistik toplama işlevi yalnızca IPowerStats.hal arayüzünden kullanılabilir. IPowerStats.hal işlevi, desteklenen cihazlar için cihaz üzerindeki güç ölçümlerinden toplanan verileri edinip kullanmak üzere API'ler içerir:

  • Hem düşük frekanslı (getRailInfo) hem de yüksek frekanslı (streamEnergyData) istemciler için ray düzeyinde enerji ölçümleri yapar ve önyüklemeden bu yana biriken enerjiyi raporlar.
  • Verileri bulunan her desteklenen PowerEntity ile ilgili bilgileri raporlar. PowerEntity, toplam cihaz güç tüketimini etkileyen bir platform alt sistemi, çevre birimi veya güç alanıdır.
  • Belirtilen öğelerin ikamet verilerini sağladığı güç öğesi durumlarının (getPowerEntityStateInfo) kümesini raporlar, ardından her bir belirtilen PowerEntity için toplu verileri raporlar.

IPowerStats.hal API'leri aşağıdaki istemciler tarafından kullanılır:

  • Statsd, ray başına güç tüketimi metriklerini toplamak için.
  • Perfetto, güç tüketimini CPU etkinliğiyle ilişkilendirmek için.
  • Batterystats, power_profile.xml.'teki önceden tanımlanmış sabitlerden pil tüketimini tahmin etmek yerine ölçülen verileri kullanarak pil ilişkilendirmesini iyileştirmek için

Android 10 ve sonraki sürümlerde cihaz üreticileri IPower.hal ve IPowerStats.hal işlevleri arasında seçim yapabilir ancak IPowerStats.hal uygulanmazsa tüm istemciler IPower.hal işlevine geri dönmelidir .

IPowerStats.hal uygulama seçenekleri

Android 7 ile Android 9 arasında yalnızca IPower.hal işlevleri kullanılabilir. Android 10'a yükseltilen cihazlarda donanım güç izleme alt sistemi veya güç istatistiklerini izleyip kaydedebilecek başka bir yöntem bulunmalıdır. Bazı SoC'ler sizin için güç kullanımı istatistiklerini toplar veya güç öğesi durum yerleşimi bilgilerini yazılım aracılığıyla edinebilirsiniz. Güç izleme donanımı yalnızca getRailInfo(), getEnergyData() ve streamEnergyData()'i desteklemek için gereklidir.

IPowerStats.hal'ü güç izleme donanımı olmadan uygularsanız getRailInfo(), getEnergyData() ve streamEnergyData() NOT_SUPPORTED döndürür. Benzer şekilde, getPowerEntityInfo(), getPowerEntityStateInfo() ve getPowerEntityStateResidencyData(), kullanılmak üzere tasarlanmamışsa NOT_SUPPORTED değerini döndürebilir.

Demiryolu izleme API'leri tarafından döndürülen verilere örnek olarak şunlar verilebilir:

  • Ekranın güç hattı X µW tüketti.
  • Modemin güç rayında Y µW tüketildi.

Alt sistem uyku durumu API'leri tarafından döndürülen verilere örnek olarak şunlar verilebilir:

  • Modem X ms süreyle uykudaydı.
  • SoC, Y ms boyunca güç daralması durumundaydı.
  • GPU, Z ms boyunca askıya alınmış durumdaydı.

Donanım güç izleme alt sistemi kullanma

Cihaz tasarımınızda donanım güç izleme alt sistemi varsa PowerStats.hal'ın verileri ayrıştırabileceği tek bir sysfs düğümü oluşturarak veya ioctl türü sistem çağrıları koleksiyonu oluşturarak IPowerStats.hal'ü uygulayın.

Çekirdek sürücünüzü, toplayıcı taşmasını önleyecek şekilde uygulamanız gerekir. Kullanılan algoritma, hem anlık hem de ortalama veri yolu voltajı ve akım ölçümleri sağlaması gereken benzersiz donanım güç izleme alt sistem tasarımınıza bağlıdır. Çekirdek sürücüsü, bu verileri enerji toplayıcıları temizlemeyecek şekilde yakalamalı ve her bir alt ray için, her bir toplayıcı sorgusundan alınan enerji okumasıyla artan 64 bitlik bir değişken biçiminde, önyüklemeden itibaren biriken enerji verilerini korumalıdır.

Belirli bir bileşenin (veya isteğe bağlı olarak birden fazla bileşenin) istatistikleri tek bir düğümde olmalıdır. Bu, sysfs'in (normalde her düğümü tek bir değerle sınırlayan) geleneksel bir kullanımı olmasa da tüm verilerin tutarlı olmasını sağlar.

Tasarımla ilgili rehberlik

  • sysfs düğümünden veri okurken veya sistem çağrıları yaparken gecikmeyi düşük tutun (maksimum 1 milisaniye).
  • Destekleyici istatistik işlevinin, güç tüketimini ölçülebilir şekilde artırmadığından emin olun:
    • Uyku modunda geçirilen süre gibi parametreleri izlemek için erişim noktası (AP) ve/veya alt sistem uyandırmalarını artırmayın.
    • Mümkün olduğunda diğer trafikle birlikte istatistikleri uygulama işlemcisi ve donanım yazılımı arasında fırsatçı bir şekilde aktarın.
  • Gerekirse alt sistem aşağıdaki sürücü işlevlerini kullanabilir:
    • Verileri biraz eski veriler pahasına dahili olarak önbelleğe alarak gecikmeyi/uyanmayı önleme.
    • Alt sistem uyurken, alt sistemi uyandırmadan güncel uyku süresini sağlamak için ekstrapolasyon gerçekleştirme.

Bileşenleri, alt sistemleri ve istatistikleri seçme

IPowerStats.hal Veri toplayacağınız bileşenleri veya alt sistemleri seçerken cihazda önemli miktarda akım (5 mA veya daha fazla) tüketen veya aşağıdakiler gibi birden fazla güç tüketimi modunu destekleyen öğeleri seçin:

  • Bağımsız SoC alt sistemleri.
  • Wi-Fi, görüntü işlemcisi veya güvenlik işlemcisi gibi SoC'nin kısmen veya tamamen dışındaki alt sistemler.
  • Yüksek güçlü LED'ler ve kameralar gibi çevre birimleri.
  • Farklı modlar kullanan güç alanları (ör. SoC'nin tamamı için güç alanı).

Özelleştirme

Bu isteğe bağlı özellik özelleştirilebilir. Kullanım alanları tasarlayın ve kullanımınızı özelleştirin:

  • Hangi rayların ölçüleceğine ve bunların ne sıklıkta ölçüleceğine karar verin.
  • Verileri ne zaman okuyacağınıza ve nasıl yorumlayacağınıza karar verin.
  • Verilerinize göre ne tür bir işlem yapacağınıza ve ne zaman yapacağınıza karar verin.

Doğrulama

VTS testleri, Android koşullarının karşılandığından emin olur. IPowerStats.hal bölümündeki yorumlar, bir cihazın uygunluğunu doğrulamak için kullanılır.

Örneğin, getRailInfo() çağrısı hiçbir sonuç döndürmezse izlenen raylar hakkında bilgi almazsınız veya SUCCESS durumu döndürülür. Bu nedenle VTS testi başarısız olur. Benzer şekilde, NON_SUPPORTED veya FILE_SYSTEM_ERROR yanıtıyla birlikte demiryolu bilgileri alırsanız bu da bir hatadır. VTS, IPower.hal ve IPowerStats.hal yorumlarındaki koşulları kullanarak HAL dosyasında cihaz üretici spesifikasyonuna uyulduğunu doğrular. VTS testinde kullanılan yorumlara örnek olarak aşağıdakileri verebiliriz:

/**
* Rail information:
* Reports information related to the rails being monitored.
*
* @return rails Information about monitored rails.
* @return status SUCCESS on success or NOT_SUPPORTED if
* feature is not enabled or FILESYSTEM_ERROR on filesystem nodes
* access error.
*/
getRailInfo()
generates(vec<e;RailInfo>e; rails, Status status);