Bileşen gücünü ölçün

Bileşen istenilen durumdayken (açık, aktif, tarama gibi) ve bileşen kapalıyken cihazın çektiği akımı karşılaştırarak bireysel komponent güç tüketimini belirleyebilirsiniz. Masaüstü güç kaynağı veya özel pil izleme araçları (Monsoon Solution Inc. Power Monitor ve Power Tool yazılımı gibi) gibi harici bir güç monitörü kullanarak, nominal voltajda cihaza çekilen ortalama anlık akımı ölçün.

Üreticiler genellikle tek bir bileşenin tükettiği akım hakkında bilgi sağlar. Pratikte cihaz pilinden çekilen akımı doğru bir şekilde temsil ediyorsa bu bilgiyi kullanın. Ancak, bu değerleri cihazınızın güç profilinde kullanmadan önce üreticinin sağladığı değerleri doğrulayın.

Güç tüketimini kontrol edin

Ölçüm yaparken cihazın, Android Hata Ayıklama Köprüsü'nü (adb) çalıştırırken kullanılan bir geliştirme ana bilgisayarına USB bağlantısı gibi harici bir şarj kaynağıyla bağlantısı olmadığından emin olun. Test edilen cihaz, ana bilgisayardan akım çekerek pildeki ölçümleri düşürebilir. OTG cihazı test edilen cihazdan akım çekebileceğinden USB On-The-Go (OTG) bağlantılarından kaçının.

Ölçülen bileşen hariç, diğer bileşenlerdeki değişikliklerden kaynaklanan hatalı ölçümleri önlemek için sistem sabit bir güç tüketimi seviyesinde çalışmalıdır. Güç ölçümlerinde istenmeyen değişikliklere neden olabilecek sistem etkinlikleri şunları içerir:

  • Hücresel, Wi-Fi ve Bluetooth alma, iletme veya tarama etkinliği . Hücresel radyo gücünü ölçmediğiniz zamanlarda cihazı uçak moduna ayarlayın ve uygun şekilde Wi-Fi veya Bluetooth'u etkinleştirin.
  • Ekran açık/kapalı . Ekran açıkken görüntülenen renkler, bazı ekran teknolojilerindeki güç tüketimini etkileyebilir. Ekran dışı bileşenlerin değerlerini ölçerken ekranı kapatın.
  • Sistem askıya alınır/devam ettirilir . Ekran kapalı durumu, sistemin askıya alınmasını tetikleyerek cihazın bazı kısımlarını düşük güçte veya kapalı duruma getirebilir. Bu, ölçülen bileşenin güç tüketimini etkileyebilir ve sistem periyodik olarak alarm göndermeye vb. devam ettiğinden güç okumalarında büyük farklılıklara neden olabilir. Ayrıntılar için bkz. Sistemin askıya alınmasının kontrol edilmesi .
  • CPU'ların hızı değişiyor ve düşük güç zamanlayıcı boşta durumuna giriyor/çıkıyor . Normal çalışma sırasında sistem, CPU hızlarında, çevrimiçi CPU çekirdeklerinin sayısında ve bellek veri yolu hızı ve CPU'lar ve bellekle ilişkili güç raylarının voltajları gibi diğer sistem çekirdek durumlarında sık sık ayarlamalar yapar. Test sırasında bu ayarlamalar güç ölçümlerini etkiler:
    • CPU hızı ölçeklendirme işlemleri, bellek veri yollarının ve diğer sistem çekirdeği bileşenlerinin saat ve voltaj ölçeklendirme miktarını azaltabilir.
    • Planlama etkinliği, CPU'ların düşük güçte boşta kalma durumlarında harcadığı sürenin yüzdesini etkileyebilir. Test sırasında bu ayarlamaların yapılmasını engellemeye ilişkin ayrıntılar için bkz. CPU hızlarını kontrol etme .

Örneğin Joe Droid bir cihazın screen.on değerini hesaplamak istiyor. Cihazda uçak modunu etkinleştirir, cihazı sabit bir geçerli durumda çalıştırır, CPU hızını sabit tutar ve sistemin askıya alınmasını önlemek için kısmi bir uyanık kalma kilidi kullanır. Joe daha sonra cihazın ekranını kapatır ve bir ölçüm yapar (200 mA). Daha sonra Joe, cihazın ekranını minimum parlaklıkta açar ve başka bir ölçüm (300 mA) alır. screen.on değeri 100 mA'dir (300 - 200).

Not : Aktif olduklarında düz bir akım tüketimi dalga biçimine sahip olmayan bileşenler için (hücresel radyo veya Wi-Fi gibi), bir güç izleme aracı kullanarak zaman içindeki ortalama akımı ölçün.

Cihazın pili yerine harici bir güç kaynağı kullanıldığında, sistem, bağlı olmayan pil termistörü veya entegre yakıt göstergesi pimleri nedeniyle sorunlarla karşılaşabilir (yani pil sıcaklığı veya kalan pil kapasitesi için geçersiz bir okuma, çekirdeği veya Android sistemini kapatabilir) . Sahte piller, termistör veya yakıt göstergesi pimleri üzerinde normal bir sistem için sıcaklık ve şarj durumu okumalarını taklit eden sinyaller sağlayabilir ve ayrıca harici güç kaynaklarına bağlanmak için uygun kablolar da sağlayabilir. Alternatif olarak sistemi, eksik pilden gelen geçersiz verileri yok sayacak şekilde değiştirebilirsiniz.

Kontrol sistemi askıya alındı

Bu bölümde, sistemin diğer ölçümlere müdahale etmesini istemediğinizde sistemin askıya alınma durumunun nasıl önleneceği ve ölçmek istediğinizde sistem askıya alma durumunun güç çekişinin nasıl ölçüleceği açıklanmaktadır.

Sistemin askıya alınmasını önleyin

Sistemin askıya alınması, güç ölçümlerinde istenmeyen değişikliklere yol açabilir ve sistem bileşenlerini, aktif güç kullanımını ölçmek için uygun olmayan düşük güç durumlarına yerleştirebilir. Ekran kapalıyken sistemin askıya alınmasını önlemek için geçici bir kısmi uyanık kalma kilidi kullanın. Bir USB kablosu kullanarak cihazı bir geliştirme ana bilgisayarına bağlayın ve ardından aşağıdaki komutu verin:

adb shell "echo temporary > /sys/power/wake_lock"

wake_lock durumundayken, ekran kapalı durumu sistemin askıya alınmasını tetiklemez. (Güç tüketimini ölçmeden önce USB kablosunu cihazdan çıkarmayı unutmayın.)

Uyandırma kilidini kaldırmak için:

adb shell "echo temporary > /sys/power/wake_unlock"

Sistemin askıya alınmasını ölçün

Sistemin askıya alınma durumu sırasında güç tüketimini ölçmek için güç profilinde cpu.idle değerini ölçün. Ölçmeden önce:

  • Mevcut uyanık kalma kilitlerini kaldırın (yukarıda açıklandığı gibi).
  • Sistemin askıya alınması tarafından kontrol edilen SoC kısımlarından ayrı bir işlemci üzerinde çalışabilecek hücresel radyonun eşzamanlı faaliyetini önlemek için cihazı uçak moduna getirin.
  • Aşağıdakileri yaparak sistemin askıya alma durumunda olduğundan emin olun:
    • Mevcut okumaların doğrulanması sabit bir değere sabitlenir. Okumalar, SoC askıya alma durumunun güç tüketimi ve açık kalan sistem bileşenlerinin (USB PHY gibi) güç tüketimi için beklenen aralıkta olmalıdır.
    • Sistem konsolu çıkışının kontrol edilmesi.
    • Sistem durumuna ilişkin harici göstergelerin izlenmesi (askıda değilken LED'in sönmesi gibi).

CPU hızlarını kontrol edin

Aktif CPU'lar çevrimiçi hale getirilebilir veya çevrimdışı duruma getirilebilir, saat hızları ve ilgili voltajları değiştirilebilir (muhtemelen bellek veri yolu hızlarını ve diğer sistem çekirdeği güç durumlarını da etkiler) ve çekirdek boşta döngüsündeyken daha düşük güç boşta durumlarına girebilir. Güç profili için farklı CPU güç durumlarını ölçerken, diğer parametreleri ölçerken güç çekişindeki sapmalardan kaçının. Güç profili, tüm CPU'ların aynı kullanılabilir hızlara ve güç özelliklerine sahip olduğunu varsayar.

CPU gücünü ölçerken veya diğer ölçümleri yapmak için CPU gücünü sabit tutarken, çevrimiçi duruma getirilen CPU sayısını sabit tutun (bir CPU'nun çevrimiçi olması ve geri kalanının çevrimdışı/çalışırken takılı olması gibi). Biri hariç tüm CPU'ları planlamada boşta tutmak kabul edilebilir sonuçlar üretebilir. Android çerçevesini adb shell stop ile durdurmak, sistem planlama etkinliğini azaltabilir.

Cihazınız için mevcut CPU hızlarını güç profili cpu.speeds girişinde belirtmeniz gerekir. Kullanılabilir CPU hızlarının bir listesini almak için şunu çalıştırın:

adb shell cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state

Bu hızlar cpu.active değerindeki karşılık gelen güç ölçümleriyle eşleşir.

Çevrimiçi hale getirilen çekirdek sayısının güç tüketimini önemli ölçüde etkilediği platformlar için, platformun cpufreq sürücüsünü veya düzenleyicisini değiştirmeniz gerekebilir. Çoğu platform, kullanıcı alanı cpufreq düzenleyicisini kullanarak ve hızı ayarlamak için sysfs arayüzlerini kullanarak CPU hızının kontrol edilmesini destekler. Örneğin, yalnızca 1 CPU'lu veya tüm CPU'lar ortak bir cpufreq politikasını paylaşan bir sistemde hızı 200 MHz'e ayarlamak için aşağıdaki komutları çalıştırmak üzere sistem konsolunu veya adb kabuğunu kullanın:

echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

Not : Tam komutlar, platform cpufreq uygulamasına bağlı olarak farklılık gösterir.

Bu komutlar, yeni hızın izin verilen sınırların dışında olmamasını sağlar, yeni hızı ayarlar ve ardından CPU'nun gerçekte çalıştığı hızı yazdırır (doğrulama için). Yürütmeden önceki mevcut minimum hız 200000'den yüksekse, ilk iki satırın sırasını tersine çevirmeniz veya maksimum hızı ayarlamadan önce minimum hızı düşürmek için ilk satırı yeniden çalıştırmanız gerekebilir.

Çeşitli hızlarda çalışan bir CPU tarafından tüketilen akımı ölçmek için, aşağıdaki komutu kullanarak CPU'yu CPU'ya bağlı bir döngüye yerleştirmek üzere sistem konsolunu kullanın:

# while true; do true; done

Döngü yürütülürken ölçümü yapın.

Bazı cihazlar, yüksek sıcaklık ölçümü nedeniyle (yani CPU'ları uzun süre yüksek hızlarda çalıştırdıktan sonra) termal kısıtlama gerçekleştirirken maksimum CPU hızını sınırlayabilir. Ölçüm alırken sistem konsolu çıkışını kullanarak veya ölçümden sonra çekirdek günlüğünü kontrol ederek bu tür sınırlamalara dikkat edin.

cpu.awake değeri için, sistem askıya alınmadığında ve görevleri yürütmediğinde tüketilen gücü ölçün. CPU, düşük güçte bir zamanlayıcı boşta döngüsünde olmalı, muhtemelen bir ARM Olay İçin Bekleme komutunu yürütüyor olmalı veya boşta kullanıma uygun bir hızlı çıkış gecikmesi ile SoC'ye özgü düşük güç durumunda olmalıdır.

cpu.active değeri için, sistem bekleme modunda olmadığında ve görevleri yürütmediğinde gücü ölçün. Bir CPU (genellikle birincil CPU) görevi çalıştırmalı, diğer tüm CPU'lar ise boş durumda olmalıdır.

Ekran gücünü ölçün

Güç açıkken ekranı ölçerken, ekran etkinleştirildiğinde normalde açık olan diğer cihazların da açık olduğundan emin olun. Örneğin, ekran açıkken dokunmatik ekran ve ekranın arka ışığı normalde açıksa, güç kullanımına ilişkin gerçekçi bir ekran örneği elde etmek için ölçüm yaptığınızda bu cihazların açık olduğundan emin olun.

Bazı ekran teknolojilerinin güç tüketimi görüntülenen renklere göre değişiklik gösterir ve bu da güç ölçümlerinin, ölçüm sırasında ekranda görüntülenene bağlı olarak önemli ölçüde değişmesine neden olur. Ölçüm yaparken ekranın gerçekçi bir ekranın güç özelliklerine sahip bir şey gösterdiğinden emin olun. Tamamen siyah bir ekran (bazı teknolojiler için en düşük gücü tüketen) ile tamamen beyaz bir ekranın uç noktaları arasında hedef alın. Yaygın bir seçim, takvim uygulamasındaki beyaz arka plan ve beyaz olmayan öğelerin bir karışımını içeren bir programın görünümüdür.

Güç açıkken ekranı minimum ve maksimum ekran/arka ışık parlaklığında ölçün. Minimum parlaklığı ayarlamak için:

  • Android kullanıcı arayüzünü kullanın (önerilmez). Ayarlar > Ekran Parlaklığı kaydırıcısını minimum ekran parlaklığına ayarlayın. Bununla birlikte, Android kullanıcı arayüzü, parlaklığın olası panel veya arka ışık parlaklığının yalnızca minimum %10-20'sine ayarlanmasına izin verir ve parlaklığın, ekranın büyük bir çaba harcamadan görünmeyebileceği kadar düşük ayarlanmasına izin vermez.
  • Bir sysfs dosyası kullanın (önerilir). Varsa, panel parlaklığını donanım tarafından desteklenen minimum parlaklığa kadar kontrol etmek için bir sysfs dosyası kullanın.

Ek olarak, platform sysfs dosyası LCD panelin, arka ışığın ve dokunmatik ekranın açılıp kapatılmasını sağlıyorsa, ekran açık ve kapalıyken ölçüm yapmak için dosyayı kullanın. Aksi takdirde, sistemin askıya alınmaması için kısmi bir uyanık kalma kilidi ayarlayın, ardından güç düğmesiyle ekranı açıp kapatın.

Wi-Fi gücünü ölçün

Wi-Fi ölçümlerini nispeten sessiz bir ağda gerçekleştirin. Ölçülen etkinlikle ilgisi olmayan yüksek hacimli yayın trafiğini işleyen ek işlerden kaçının.

wifi.on değeri, Wi-Fi etkinleştirildiğinde ancak aktif olarak iletim veya alım yapmadığında tüketilen gücü ölçer. Bu genellikle Wi-Fi etkin ve devre dışıyken sistem askıya alma (uyku) durumundaki mevcut çekiş arasındaki delta olarak ölçülür.

wifi.scan değeri, erişim noktaları için Wi-Fi taraması sırasında tüketilen gücü ölçer. Uygulamalar, WifiManager sınıfı startScan() API'sini kullanarak Wi-Fi taramalarını tetikleyebilir. Ayrıca, güç tüketiminde gözle görülür bir artışla birkaç saniyede bir erişim noktası taraması gerçekleştiren Ayarlar > Wi-Fi'yi de açabilirsiniz, ancak ekran gücünü bu ölçümlerden çıkarmanız gerekir.

Not : Ağ alım ve iletim trafiğini oluşturmak için kontrollü bir kurulum ( iperf gibi) kullanın.