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

Bileşen istenen durumdayken (ör. açık, etkin, tarama) ve bileşen kapalıyken cihaz tarafından çekilen akımı karşılaştırarak bileşenlerin güç tüketimini tek tek belirleyebilirsiniz. Bir tezgah güç kaynağı veya özel pil izleme araçları (ör. Monsoon Solution Inc. Power Monitor ve Power Tool yazılımı) gibi harici bir güç monitörü kullanarak cihazda nominal voltajda çekilen ortalama anlık akımı ölçün.

Üreticiler genellikle tek bir bileşenin tükettiği akım hakkında bilgi sağlar. Bu bilgiler, cihaz pilinden çekilen akımı gerçekte doğru şekilde yansıtıyorsa kullanın. Ancak üretici tarafından sağlanan değerleri cihaz güç profilinizde kullanmadan önce doğrulayın.

Güç tüketimini kontrol etme

Ölçüm yaparken cihazın harici bir şarj kaynağına (ör. Android Debug Bridge (adb) çalıştırırken kullanılan bir geliştirme ana makinesine USB bağlantısı) bağlı olmadığından emin olun. Test edilen cihaz, ana makineden akım çekerek pildeki ölçümleri düşürebilir. OTG cihazı, test edilen cihazdan akım çekebileceğinden USB Hareket Halinde (OTG) bağlantılarından kaçının.

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

  • Hücresel, kablosuz ağ ve Bluetooth alma, gönderme veya tarama etkinliği. Hücresel radyo gücünü ölçmüyorsanız cihazı uçak moduna ayarlayın ve uygun şekilde kablosuz bağlantıyı veya Bluetooth'u etkinleştirin.
  • Ekran açık/kapalı: Ekran açıkken görüntülenen renkler, bazı ekran teknolojilerinde güç tüketimini etkileyebilir. Ekran dışındaki bileşenlerin değerlerini ölçerken ekranı kapatın.
  • Sistemi askıya alma/devam ettirme. Ekran kapalıyken sistem askıya alınabilir. Bu durumda cihazın bazı parçaları düşük güç moduna veya kapalı duruma geçirilir. Bu durum, ölçülen bileşenin güç tüketimini etkileyebilir ve sistem periyodik olarak alarm göndermeye devam ettiğinden güç ölçümlerinde büyük farklılıklar oluşabilir. Ayrıntılar için Sistem askıya alma özelliğini kontrol etme başlıklı makaleyi inceleyin.
  • CPU'ların hızını değiştirmesi ve düşük güç planlayıcı boş durumuna girmesi/bu durumdan çıkması. Normal çalışma sırasında sistem, CPU hızlarında, çevrimiçi CPU çekirdeklerinin sayısında ve bellek veri yolu hızı ile 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 aşağıdaki düzenlemeler güç ölçümlerini etkiler:
    • CPU hız ölçeklendirme işlemleri, bellek veri yollarının ve diğer sistem çekirdek bileşenlerinin saat ve voltaj ölçeklendirme miktarını azaltabilir.
    • Planlama etkinliği, CPU'ların düşük güçte boş durumda geçirdiği sürenin yüzdesini etkileyebilir. Test sırasında bu ayarlamaların yapılmasını önlemeyle ilgili ayrıntılar için CPU hızlarını kontrol etme başlıklı makaleyi inceleyin.

Örneğin, Cihan Cihangir bir cihazın screen.on değerini hesaplamak istiyor. Cihaz üzerinde uçak modunu etkinleştirir, cihazı sabit bir akım durumunda çalıştırır, CPU hızını sabit tutar ve sistemin askıya alınmasını önlemek için kısmi uyanma kilidi kullanır. Ardından cihaz ekranını kapatır ve ölçüm yapar (200 mA). Ardından, cihaz ekranını minimum parlaklıkta açar ve başka bir ölçüm yapar (300 mA). screen.on değeri 100 mA'dır (300 - 200).

Not: Etkin durumdayken sabit bir akım tüketimi dalga biçimine sahip olmayan bileşenler (ör. hücresel radyo veya kablosuz ağ) için güç izleme aracı kullanarak zaman içindeki ortalama akımı ölçün.

Cihaz pili yerine harici bir güç kaynağı kullanıldığında, sistemde bağlı olmayan bir pil termistörü veya entegre yakıt göstergesi pimleri nedeniyle sorunlar yaşanabilir (ör. pil sıcaklığı veya kalan pil kapasitesi için geçersiz bir okuma, çekirdeği ya da Android sistemini kapatabilir). Sahte piller, normal bir sistemdeki sıcaklık ve şarj durumu okumalarını taklit eden sinyaller sağlayabilir. Ayrıca harici güç kaynaklarına bağlanmak için uygun bağlantılar sağlayabilir. Alternatif olarak, eksik pildeki geçersiz verileri yok sayacak şekilde sistemi değiştirebilirsiniz.

Kontrol sistemi askıya alma

Bu bölümde, diğer ölçümleri etkilemesini istemediğinizde sistem askıya alma durumunun nasıl önleneceği ve ölçmek istediğinizde sistem askıya alma durumunun güç tüketiminin nasıl ölçüleceği açıklanmaktadır.

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

Sistem askıya alma işlemi, güç ölçümlerinde istenmeyen bir varyasyona neden olabilir ve sistem bileşenlerini etkin güç kullanımını ölçmek için uygun olmayan düşük güç durumlarına sokabilir. Ekran kapalıyken sistemin askıya alınmasını önlemek için geçici kısmi uyanma kilidi kullanın. USB kablosu kullanarak cihazı bir geliştirme ana makinesine 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 sistem askıya alma işlemini 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"

Ölçüm sisteminin askıya alınması

Sistem askıya alınmış durumdayken güç tüketimini ölçmek için güç profilinde cpu.idle değerini ölçün. Ölçüm yapmadan önce:

  • Mevcut uyandırıcı kilitleri kaldırın (yukarıda açıklandığı gibi).
  • Sistem tarafından askıya alınan SoC bölümlerinden ayrı bir işlemcide çalışabilecek hücresel radyonun eşzamanlı etkinliğini önlemek için cihazı uçak moduna alın.
  • Aşağıdakileri yaparak sistemin askıya alınmış durumda olduğundan emin olun:
    • Mevcut ölçümlerin sabit bir değere yerleştiğini onaylama. Ölçümler, SoC askıya alma durumunun güç tüketimi ve açık kalan sistem bileşenlerinin (USB PHY gibi) güç tüketiminin beklenen aralığında olmalıdır.
    • Sistem konsolu çıkışını kontrol etme.
    • Sistem durumunun harici göstergelerini (ör. askıya alınmadığında LED'in kapanması) izleme

CPU hızlarını kontrol etme

Etkin CPU'lar çevrimiçi hale getirilebilir veya çevrimdışı bırakılabilir, saat hızları ve ilişkili voltajları değiştirilebilir (muhtemelen bellek veri yolu hızlarını ve diğer sistem çekirdek güç durumlarını da etkiler) ve çekirdek boş döngüsündeyken daha düşük güçte boşta kalma durumlarına girebilir. Güç profili için farklı CPU güç durumlarını ölçerken diğer parametreleri ölçerken güç tüketimi varyansından 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, online hale getirilen CPU sayısını sabit tutun (ör. bir CPU online, diğerleri çevrimdışı/sıcak takılı). Birisi hariç tüm CPU'ları planlamada boşta tutmak kabul edilebilir sonuçlar verebilir. Android çerçevesini adb shell stop ile durdurmak, sistem planlama etkinliğini azaltabilir.

Güç profili cpu.speeds girişinde, cihazınız için kullanılabilen CPU hızlarını belirtmeniz gerekir. Kullanılabilir CPU hızlarının listesini almak için:

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

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

Kullanıma sunulan çekirdek sayısının güç tüketimini önemli ölçüde etkilediği platformlarda, platformun cpufreq sürücüsünü veya yöneticisini değiştirmeniz gerekebilir. Çoğu platform, kullanıcı alanı cpufreq denetleyicisini kullanarak CPU hızını kontrol etmeyi ve hızı ayarlamak için sysfs arayüzlerini kullanmayı destekler. Örneğin, yalnızca 1 CPU'ya sahip bir sistemde veya tüm CPU'ların ortak bir cpufreq politikasını paylaştığı bir sistemde hızı 200 MHz olarak ayarlamak için sistem konsolunu veya adb kabuğunu kullanarak aşağıdaki komutları çalıştırı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 dışında olmadığından emin olur, yeni hızı ayarlar ve ardından CPU'nun gerçekte çalıştığı hızı (doğrulama için) yazdırır. Yürütme öncesi geçerli minimum hız 200.000'den yüksekse maksimum hızı ayarlamadan önce minimum hızı düşürmek için ilk iki satırın sırasını tersine çevirmeniz veya ilk satırı tekrar çalıştırmanız gerekebilir.

Çeşitli hızlarda çalışan bir CPU'nun tükettiği akımı ölçmek için sistem konsolunu kullanarak CPU'yu CPU'ya bağlı bir döngüye yerleştirin:

# while true; do true; done

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

Bazı cihazlar, yüksek sıcaklık ölçümü nedeniyle (yani CPU'ları uzun süreler boyunca yüksek hızlarda çalıştırdıktan sonra) termal kısıtlama yaparken 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ırlamaları kontrol edin.

cpu.awake değeri için sistem askıya alınmadığında ve görev yürütmediğinde tüketilen gücü ölçün. CPU, düşük güç planlayıcı boş döngüsünde olmalı, muhtemelen bir ARM Wait For Event (Etkinlik Bekle) talimatı yürütüyor olmalı veya boşta kullanıma uygun hızlı çıkış gecikmesi olan SoC'ye özgü düşük güç durumunda olmalıdır.

cpu.active değeri için sistem askıya alma modunda değilken ve görev yürütmüyorken gücü ölçün. Bir CPU (genellikle birincil CPU) görevi çalıştırırken diğer tüm CPU'lar boş durumda olmalıdır.

Ekran gücünü ölçme

Ekran açıkken güç tüketimini ölçerken, ekran etkinleştirildiğinde normalde açılan diğer cihazların da açık olduğundan emin olun. Örneğin, dokunmatik ekran ve ekran arka ışığı normalde ekran açıkken açıksa ekran açıkken güç kullanımıyla ilgili gerçekçi bir örnek elde etmek için ölçüm yaparken bu cihazların açık olduğundan emin olun.

Bazı ekran teknolojilerinde güç tüketimi, gösterilen renklere göre değişir. Bu da güç ölçümlerinin, ölçüm sırasında ekranda gösterilenlere göre önemli ölçüde değişmesine neden olur. Ölçüm yaparken ekranda gerçekçi bir ekranın güç özelliklerine sahip bir şeyin gösterildiğinden emin olun. Tamamen siyah (bazı teknolojiler için en az güç tüketimi olan) ve tamamen beyaz ekran arasında bir değer seçin. Beyaz arka plan ve beyaz olmayan öğelerin bir karışımının yer aldığı takvim uygulamasındaki bir program görünümü yaygın bir seçimdir.

Ekranı, minimum ve maksimum ekran/arka ışık parlaklığındayken ölçün. Minimum parlaklığı ayarlamak için:

  • Android kullanıcı arayüzünü kullanın (önerilmez). Ayarlar > Ekran Parlaklığı kaydırma çubuğunu minimum ekran parlaklığına ayarlayın. Ancak Android kullanıcı arayüzü, parlaklığın yalnızca mümkün olan panel veya arka ışık parlaklığının en az% 10-20'si kadar ayarlanmasına izin verir ve parlaklığın, ekranın çok fazla çaba gösterilmeden görülemeyeceği kadar düşük ayarlanmasına izin vermez.
  • sysfs dosyası kullanma (önerilir). Varsa panel parlaklığını donanım tarafından desteklenen minimum parlaklığa kadar kontrol etmek için bir sysfs dosyası kullanın.

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

Kablosuz ağ gücünü ölçme

Nispeten sessiz bir ağda kablosuz ölçümleri yapın. Ölçülen etkinlikle alakalı olmayan yüksek hacimli yayın trafiğini işlemek için ek iş yükü eklemekten kaçının.

wifi.on değeri, kablosuz ağ etkinken ancak etkin bir şekilde veri aktarmıyor veya almıyorken tüketilen gücü ölçer. Bu değer genellikle, kablosuz ağ etkinken ve devre dışıyken sistem askıya alma (uyku) durumundaki akım tüketimi arasındaki fark olarak ölçülür.

wifi.scan değeri, erişim noktaları için kablosuz tarama sırasında tüketilen gücü ölçer. Uygulamalar, WifiManager sınıfı startScan()API'yi kullanarak kablosuz bağlantı taramalarını tetikleyebilir. Ayarlar > Kablosuz Ağ'ı da açabilirsiniz. Bu menü, güç tüketiminde belirgin bir sıçramayla birkaç saniyede bir erişim noktası taraması gerçekleştirir ancak bu ölçümlerden ekran gücünü çıkarmanız gerekir.

Not: Ağda alma ve aktarma trafiği oluşturmak için kontrollü bir kurulum (ör. iperf) kullanın.