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

Her bir bileşenin güç tüketimini belirlemek için her bir bileşenin bileşen istenen durumda (açık, etkin, tarama gibi) olduğunda ve bileşen kapalıdır. Cihaza çekilen ortalama anlık akımı bank güç kaynağı veya özel bir güç kaynağı gibi harici bir güç monitörü kullanılan nominal voltaj pil izleme araçları (ör. Monsoon Solution Inc. Güç Monitörü ve Güç Aracı yazılımı).

Üreticiler genellikle tek bir bileşen tarafından tüketilen akım hakkında bilgi sağlar. Bu bilgiler, cihazınızın pilinden çekilen akımı doğru bir şekilde yansıtıyorsa, lütfen alıştırma yapmak. Ancak bu değerleri cihazınızda kullanmadan önce üretici tarafından sağlanan değerleri doğrulayın güç profili.

Güç tüketimini kontrol edin

Ölçüm yaparken cihazın harici bir şarj kaynağına bağlı olmadığından emin olun. Örneğin: Android Debug Bridge (adb) çalıştırırken kullanılan bir geliştirme ana makinesine USB bağlantısı olarak. Cihaz test sırasında ana makineden akım gelebileceği için pildeki ölçümler düşebilir. USB'yi kullanma OTG cihazı test edilen cihazdan akım çekebileceği için On-The-Go (OTG) bağlantıları

Ölçülen bileşen hariç tutulduğunda, sistem sabit bir güç düzeyinde çalışmalıdır. diğer bileşenlerdeki değişikliklerin neden olduğu yanlış ölçümleri önlemek için tüketim. Sistem güç ölçümlerinde istenmeyen değişikliklere neden olabilecek etkinliklerden bazıları şunlardır:

  • Hücresel, kablosuz ve Bluetooth üzerinden alma, iletme veya tarama etkinliği. Zaman hücrenin radyo gücünü ölçülmüyorsa, cihazı uçak moduna ayarlayın ve Kablosuz veya Bluetooth'u şu şekilde etkinleştirin: uygun olmalıdır.
  • Ekranı açın/kapatın. Ekran açıkken görüntülenen renkler güç tüketimini etkileyebilir kullanmaya başladılar. Ekran dışındaki bileşenlerin değerlerini ölçerken ekranı kapatın.
  • Sistemi askıya alma/devam ettirme Ekranın kapalı olması sistemin askıya alınmasını tetikleyebilir. cihazın bazı kısımlarını düşük güçle veya kapalı duruma getirerek. Bu durum, ve güç ölçümlerinde sistem düzenli aralıklarla büyük sapmalar ortaya çıkarır devam ettirilir vb. işlemler yapılır. Ayrıntılar için bkz. Sistemi kontrol etme askıya alma.
  • CPU'ların hızı değişiyor ve düşük güç planlayıcısının boşta durumuna girmesi/çıkması. Sistem, normal çalışma sırasında CPU hızlarında, yani çevrimiçi ortamdaki CPU çekirdeklerinin yanı sıra bellek veri yolu hızı ve güç raylarının voltajları gibi diğer sistem temel durumları CPU'lar ve bellekle ilgili. Test sırasında bu ayarlamalar güç ölçümlerini etkiler:
    • CPU hızı ölçeklendirme işlemleri, bellek veri yollarının saat ve voltaj ölçekleme miktarını azaltabilir. ve diğer sistem temel bileşenlerinden bahsedeceğiz.
    • Etkinlik programlama, CPU'ların düşük güç boşta kalma durumlarında harcadığı 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.

Örneğin, Ali Droid bir cihazın screen.on değerini hesaplamak istiyor. O cihazda uçak modunu etkinleştirir, cihazı sabit bir geçerli durumda çalıştırır, CPU'yu tutar hız sabitini ayarlar ve sistemin askıya alınmasını önlemek için kısmi uyanık kalma kilidi kullanır. Joe cihazı çevirir ve bir ölçüm (200 mA) alır. Ardından, Joe cihaz ekranını en azından açar daha sonra tekrar ölçüm yapar (300 mA). screen.on değeri: 100 mA (300 - 200).

Not: Mevcut tüketimde düz bir dalga formuna sahip olmayan bileşenler, etkin (hücresel radyo veya kablosuz ağ gibi) bir güç kullanarak zaman içindeki ortalama akımı ölçün izleme aracıdır.

Cihazın pili yerine harici bir güç kaynağı kullandığınızda sistem bağlı olmayan pil termistörü veya entegre yakıt göstergesi pimlerinden kaynaklanan sorunlar (ör. geçersiz pil sıcaklığını veya kalan pil kapasitesini ölçmek, çekirdeği ya da Android'i kapatabilir. sistem). Sahte piller, termistör veya yakıt gösterge pimleri üzerinde sıcaklığı taklit eden sinyaller sağlayabilir. ve ücret durumu ölçümlerini yapabilir ve ayrıca olası satış göstergeleri için harici güç kaynaklarına bağlanıyor. Alternatif olarak, sistem davranışını değiştirerek geçersiz veriler oluşturabilirsiniz.

Kontrol sistemini askıya alma

Bu bölümde, müdahalesini istemediğinizde sistemin askıya alınma durumundan nasıl kaçınacağınızı açıklanmaktadır. ve başka bir ölçüm yaptığınızda, sistem askıya alma durumunun güç değişimini nasıl ölçeceğinizi ölçmek istiyorsunuz.

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

Sistem askıya alma işlemi, güç ölçümlerinde istenmeyen sapmalara ve sistem bileşenlerini yerleştirebilir bu da aktif güç kullanımını ölçmek için uygun değil. Sistemin çalışmasını önlemek için askıya almak için geçici bir kısmi uyanık kalma kilidi kullanın. USB kablosu kullanarak bağlayın bir geliştirme ana makinesine ekleyin, ardından şu komutu verin:

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

wake_lock kullanılırken "ekran kapalı" durumu, sistem askıya alma işlemini tetiklemez. (Güç tüketimini ölçmeden önce USB kablosunu cihazdan çıkarmayı unutmayın.)

Uyanık kalma kilidini kaldırmak için:

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

Sistem askıya alma durumunu ölç

Sistem askıya alma durumunda güç tüketimini ölçmek için Güç profilinde cpu.idle. Ölçümden önce:

  • Mevcut uyanık kalma kilitlerini kaldırın (yukarıda açıklandığı gibi).
  • Hücresel radyonun eş zamanlı olarak çalışmasını önlemek için cihazı uçak moduna alın. sistem askıya alma tarafından kontrol edilen SoC bölümlerinden ayrı bir işlemcide çalışabilir.
  • Aşağıdakileri yaparak sistemin askıya alınma durumunda olduğundan emin olun:
    • Mevcut değerlerin sabit bir değere ayarlandığını onaylamak. Okuma değerleri beklenen aralıkta olmalıdır SoC askıya alma durumunun güç tüketimi ve sistemin güç tüketimi aralığı bileşenler (USB PHY gibi) üzerinde çalışır.
    • Sistem konsolu çıkışı kontrol ediliyor.
    • Sistemin durumu hakkında harici göstergeleri izleme (ör. kapalıyken sönen bir LED) askıya alma).

CPU hızlarını kontrol etme

Etkin CPU'lar internete dönüştürülebilir veya çevrimdışına çıkarılabilir, kendi saat hızları gösterilebilir ve ilişkilendirilebilir. voltaj değişti (muhtemelen bellek veri yolu hızlarını ve diğer sistem temel güç durumlarını da etkiler), ve çekirdek boşta kalma döngüsündeyken daha düşük güç boşta kalma durumları girebilir. Farklı CPU'ları ölçerken diğer parametreleri ölçerken güç tüketimindeki varyanstan kaçının. Güç profili, tüm CPU'ların aynı hızlara ve güç özelliklerine sahip olduğunu varsayar.

CPU gücünü ölçerken veya diğer ölçümler için CPU gücünü sabit tutarken Sürekli çevrimiçi işlem yapmaya devam eden CPU sayısı (örneğin, bir CPU'nun online, geri kalanının çevrimdışı/kısaltılmış). Boşta kalma planlamasında biri hariç tüm CPU'ları tutmak kabul edilebilir olabilir sonuç. adb shell stop ile Android çerçevesini durdurmak sistemi düşürebilir en iyi uygulamaları paylaşacağım.

Cihazınızın mevcut CPU hızlarını güç profilinde belirtmelisiniz cpu.speeds giriş. Mevcut CPU hızlarının listesini almak için şu komutu çalıştırın:

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.

Çekirdek sayısının çevrimiçi ortama taşındığı platformların güç tüketimini önemli ölçüde etkilediği platformlarda platformun cpufreq sürücüsünü veya yöneticisini değiştirmesi gerekebilir. Çoğu platform, kullanıcı alanı cpufreq yöneticisini kullanarak CPU hızını kontrol etmek ve hız. Örneğin, yalnızca 1 CPU'lu veya aynı CPU'yu paylaşan tüm CPU'larda 200 MHz hızı belirleyin. genel cpufreq politikası yerine, aşağıdaki komutları çalıştırmak için 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: Kesin komutlar platformun 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 kalmamasını sağlar, yeni hızı ayarlar, ardından CPU'nun gerçekte çalıştığı hızı yazdırma (doğrulama için). Mevcut başlamadan önceki minimum hız 200.000'den yüksekse sırayı tersine çevirmeniz gerekebilir. veya maksimum hızı ayarlıyorum.

Çeşitli hızlarda çalışan bir CPU tarafından tüketilen akımı ölçmek için sistem konsolunu kullanarak CPU'ya bağlı bir döngüde şu komutu kullanarak:

# while true; do true; done

Döngü çalışırken ölçüm yapın.

Bazı cihazlar, bağlantı hızının yüksek olması nedeniyle termal kısıtlama uygulanırken maksimum CPU hızını sınırlayabilir. sıcaklık ölçümü (yani CPU'ları uzun süre boyunca yüksek hızlarda çalıştırdıktan sonra). Dikkat edilecek noktalar Bu sınırlamayı, ölçüm yaparken sistem konsolu çıkışını kullanarak veya çekirdek günlüğünü indirir.

cpu.awake değeri için, sistem şurada değilken tüketilen gücü ölçün: görevleri askıya almanın ve yürütmenin mümkün olmamasını sağlar. CPU, düşük güçli bir planlayıcı boşta kalma döngüsünde olmalıdır , muhtemelen bir ARM Etkinlik Bekleme talimatını veya SoC'ye özel bir düşük güç durumunda yürütme uygun bir hızlı çıkış gecikmesiyle test edin.

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

Ekran gücünü ölç

Ekranı güçle ölçerken diğer cihazların normalde ekran açıkken açık olduğundan emin olun etkinleştirildiğinde de açık olur. Örneğin, dokunmatik ekran ve ekranın arka ışığı normalde açık olacaksa Ekran açıkken gerçek bir örnek almak için ölçüm yaparken bu cihazların açık güç kullanımında ekranı gösteriyor.

Bazı ekran teknolojilerinin güç tüketimi gösterilen renklere göre değişiklik gösterir. ekranda görüntülenenlere bağlı olarak önemli ölçüde farklılık gösterecektir. bahsedeceğim. Ölçüm yaparken ekranda güç kaynağı gösterildiğinden emin olun özellikleri hakkında daha fazla bilgi edineceksiniz. Hedefiniz, tamamen siyah bir ekranın en uç noktaları arasında. tüketir.) ve tamamen beyaz bir ekran alır. Genelde tercih edilen seçenek, beyaz arka planlı ve beyaz olmayan öğelerin karışımından oluşan bir takvim uygulamasında.

Ekranın güç durumunu 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ı yapın > Ekran Parlaklığı minimum ekran parlaklığına getirin. Ancak Android kullanıcı arayüzü, parlaklığı yalnızca mevcut panel veya arka ışık parlaklığının en az% 10-20'sini kaplar ve çok düşük bir parlaklık sağlar. Böylece, çok çaba gerektirmeden ekran görünmeyebilir.
  • Ssfs dosyası kullanın (önerilir). Kullanılabilir durumdaysa, Sysefs dosyası kullanarak panel parlaklığını donanım tarafından desteklenen minimum parlaklığa kadar düşürür.

Ayrıca, platform sysfs dosyası LCD panelinin, arka ışığın ve Ekran açıkken ve kapalıyken ölçüm yapmak için dosyayı kullanın. Aksi halde sistemin askıya almaması için kısmi bir uyanık kalma kilidi ayarlayın, ardından güç düğmesiyle görüntüleyin.

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

Kablosuz ölçümlerini nispeten sessiz bir ağda yapın. Ek çalışma yapmaktan kaçının Ölçülen etkinlikle ilgili olmayan yüksek hacimli yayın trafiği işleme.

wifi.on değeri, kablosuz bağlantı etkinken tüketilen gücü ölçer ancak şu değeri ölçmez: almanın en iyi yoludur. Bu genellikle, çekilecek mevcut çekim arasındaki delta Kablosuz bağlantının etkin veya devre dışı olarak belirlendiği sistem askıya alma (uyku) durumu

wifi.scan değeri, erişim için kablosuz ağ taraması sırasında tüketilen gücü ölçer puan. Uygulamalar WifiManager sınıfını kullanarak kablosuz ağ taramalarını tetikleyebilir startScan()API. İsterseniz Ayarlar > Erişim noktası gerçekleştiren Wi-Fi Güç tüketiminde belirgin bir sıçramayla birkaç saniyede bir tarama yapar ancak ekranı çıkarmanız gerekir gücünüze güç katar.

Not: Kontrollü bir kurulum kullanın (ör. iperf) ağ almak ve iletmek için kullanılır yardımcı olur.