測量元件功率

您可以比較目前繪製的圖表,判斷個別元件的耗電量 裝置的狀態 (例如已開啟、啟用、掃描),以及 元件已關閉。以特定比例測量裝置即時繪製的平均裝置數 使用外接電源監控器的名電電壓,例如長凳電源供應器或專用 電池監控工具 (例如 Monsoon Solution Inc. Power Monitor 和 Power Tool 軟體)。

製造商通常會提供個別元件目前使用的資訊。 如果這項資訊準確呈現出目前裝置電池的供電來源,請使用 練習。不過,請先驗證製造商提供的值,再在裝置上使用這些值 。

控管耗電量

測量時,請確認裝置不會連線到外部充電來源,例如 做為 USB 連線,連至執行 Android Debug Bridge (ADB) 時使用的開發主機。裝置 進行測試時,可能從主機上繪製電流,進而降低電池的測量結果。避免使用 USB 路上 (OTG) 連線,因為 OTG 裝置可能會從測試中的裝置繪製目前的畫面。

如果排除要測量的元件,系統應以恆亮的次方執行 避免其他元件變更造成的測量不準確系統 可能會對電源測量結果造成不必要的變更,包括:

  • 行動網路、Wi-Fi 和藍牙接收、傳輸或掃描活動。時間 不能測量基地台的無線電功率,請將裝置設為飛航模式,並啟用 Wi-Fi 或藍牙 或適當。
  • 螢幕開啟/關閉:螢幕開啟時顯示的顏色可能會影響電源繪圖 某些螢幕技術測量非螢幕元件的值時,請關閉螢幕。
  • 系統暫停/繼續。螢幕關閉狀態可能會導致系統停權; 將裝置的零件放在低耗電或關機狀態下。這可能會影響 系統會定期測量元件,並產生大量的功率讀數 繼續執行,即可傳送鬧鐘等。詳情請參閱控制系統 暫停
  • CPU 會調整速度,以及進入/結束低功耗排程器閒置狀態。 在正常作業期間,系統會經常調整 CPU 速度 (也就是線上活動量) CPU 核心和其他系統核心狀態,例如記憶體匯流排速度和電源軌電壓 例如 CPU 和記憶體在測試期間,以下調整會影響功率測量:
    • CPU 速度資源調度作業可以減少記憶體匯流排和電壓縮放量 以及其他系統核心元件
    • 排程活動可能會影響 CPU 處於低功耗閒置狀態的時間百分比。 如需防止在測試期間發生這些調整的詳細資訊,請參閱 控管 CPU 速度

舉例來說,Joe Droid 想要計算裝置的 screen.on 值。他 在裝置上啟用飛航模式、以穩定目前的狀態執行裝置,以及將 CPU 速度常數,並會使用部分 Wake Lock,避免系統暫停。小周然後轉動裝置 測量螢幕並進行測量 (200 mA)。接下來,Joe 至少會開啟裝置螢幕 再進行一次測量 (300 mA)。screen.on 值為 100 mA (300 - 200)。

注意:適用於沒有目前耗用量平面波形的元件時 主動模式 (例如行動無線電或 Wi-Fi),請用電源測量一段時間的平均目前電量 都有適合的工具

使用外部電源取代裝置電池時,系統可能遇到以下問題: 因未連接的電池熱阻器或整合式燃油量表接腳而造成的問題 (例如 電池溫度或剩餘電池容量的讀取作業可能會關閉核心或 Android 系統)。假電池可提供能模仿溫度的恆溫器或燃料儀表板的訊號 一般系統的充電和充電狀態讀取資料,也能為 連接外部電源供應器。此外,您可以修改系統,讓它忽略 缺少的電池所產生的無效資料

控制系統已暫停

本節說明如何避免在不想幹擾的情況下避免系統暫停狀態 其他測量值,以及如何測量系統暫停狀態的電源繪製情形 您想評估的 Pod 為何

防止系統停權

系統暫停可能導致電力測量出現不必要的差異,並放置系統元件 狀態不足,不適合測量主動用電量。防止系統 在螢幕關閉時暫停,使用暫時的部分 Wake Lock。使用 USB 傳輸線連接 將裝置傳送至開發主機,然後發出以下指令:

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

wake_lock 中,螢幕關閉狀態不會觸發系統暫停。 (測量耗電量前,請記得先從裝置拔除 USB 傳輸線)。

如要移除喚醒鎖定:

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

測量系統暫停

如要測量系統暫停期間的電源繪圖,請測量 電源設定檔中的 cpu.idle。評估前:

  • 移除現有的 Wake Lock (如上所述)。
  • 將裝置設為飛航模式,以免手機無線電同時進行活動 可能會在獨立處理器上執行,而非由系統暫停控制的 SoC 部分執行。
  • 如何確保系統處於暫停狀態:
    • 確認目前讀數會降為穩定值。朗讀內容應符合預期 將 SoC 暫停狀態的耗電量加上系統耗電量的範圍 保持供電的元件 (例如 USB PHY)。
    • 檢查系統控制台輸出內容。
    • 監視系統狀態的外部跡象 (例如 LED 在非處於 暫停)。

控制 CPU 速度

使用中的 CPU 可離線使用或離線運作、具有時鐘速度, 電壓發生變化 (也可能影響記憶體匯流排速度和其他系統核心電源狀態) 並在核心閒置迴圈中進入較低的閒置狀態。測量不同的 CPU 時 電源狀態,請避免在測量其他參數時,所發生耗電量的差異。 電源設定檔會假設所有 CPU 提供相同的速度和功率特性。

測量 CPU 效能時,或在保持 CPU 電源常數時, 上線的 CPU 數量 (例如:將一個 CPU 連上網路,另一部分則是保持連線狀態) 離線/斷電時)。將排程中除了一個 CPU 以外的所有 CPU 保持在閒置狀態, 也就是預測結果使用 adb shell stop 停止 Android 架構可減少系統 安排活動。

必須在電源設定檔中指定裝置可用的 CPU 速度 「cpu.speeds」項目。如要取得可用 CPU 速度的清單,請執行以下指令:

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

這些速度與值 cpu.active 中對應的功率測量值相符。

如果平台提供線上核心數量會大幅影響耗電量,您 則可能需要修改平台的 cpufreq 驅動程式或總管大多數平台都支援 利用使用者空間 cpufreq 管理器,並透過 sysfs 介面設定 CPU 速度 速度。舉例來說,如要在只有 1 個 CPU 或所有 CPU 共用單一 CPU 的系統上設定 200MHz 的速度, 常見的 Cpufreq 原則,請透過系統主控台或 ADB 殼層執行下列指令:

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

注意:確切的指令會因平台 CPU 實作方式而異。

這些指令可確保新速度不會超過允許的邊界,然後設定新速度,然後 會顯示 CPU 實際執行的速度 (用於驗證)。如果現行 執行前的最小速度超過 200000,您可能需要反轉順序 ,或再次執行第一行,降低 正在設定最高速度

如要測量以不同速度執行的 CPU 目前消耗量,請使用系統主控台 使用下列指令,瞭解 CPU 繫結迴圈中的 CPU:

# while true; do true; done

在迴圈執行時測量。

某些裝置可在執行熱節流時限制最高 CPU 速度,但因為高 溫度測量 (即以高速執行 CPU 持續處於長時間運作) 後。觀看 可使用系統主控台輸出內容進行測量, 核心記錄。

針對 cpu.awake 值,測量系統不在背景使用時的耗電量 或是暫停工作,而不是執行工作CPU 應處於低耗電排程器 閒置迴圈 ,可能執行 ARM 等待事件指示或 SoC 特定低功率狀態 並具有適用於閒置用途的快速結束延遲時間

如果是 cpu.active 值,請測量系統未處於暫停模式時的耗電量, 而不是執行任務使用一個 CPU (通常是主要 CPU) 應在所有其他 CPU 執行任務 應處於閒置狀態。

測量螢幕電量

測量開機情況時,請確認其他裝置在螢幕處於開啟狀態時通常已開啟 已啟用舉例來說,如果觸控螢幕和螢幕背光通常開啟,就會發生以下情況: 因此在螢幕開啟時,請確保這些裝置處於開啟狀態,以便取得實際情境 開啟螢幕。

部分顯示技術的耗電量會因顯示的顏色而異, 視裝置螢幕顯示的內容而定 成效評估方式測量時,請確保螢幕畫面顯示的是有電源狀態的項目 模擬真實螢幕的特性鎖定全黑螢幕的極端主義畫面 ( 以接收部分技術的最低電力) 和全白螢幕。其中一項常用選項是檢視畫面 日曆應用程式中的時間表,混合使用白色背景和非白色元素。

最低最大螢幕/背光亮度測量螢幕開啟情形。 如何設定最低亮度:

  • 使用 Android UI (不建議使用)。設定「設定」>螢幕亮度 將滑桿移到最小螢幕亮度。然而,Android UI 僅允許將亮度設定為 面板或背光亮度的至少 10-20%,且不允許設定 並將亮度調整到最低亮度,使得螢幕可能無法順利顯示。
  • 使用 sysfs 檔案 (建議)。如果可以,請使用 sysfs 檔案來控制 面板亮度可調至硬體支援的最低亮度

此外,如果平台 sysfs 檔案可開啟 LCD 面板、背光和 無論螢幕開啟或關閉,都能使用這個檔案進行測量。否則 設定部分 Wake Lock,讓系統不要暫停運作,然後開啟或關閉 。

測量 Wi-Fi 功率

透過相對安靜的網路執行 Wi-Fi 測量。避免導入額外工作 會處理大量與您要測量的活動無關的廣播流量。

wifi.on 值會測量 Wi-Fi 啟用時的耗電量 主動傳輸或接收。通常是以目前繪圖的 啟用 Wi-Fi 時系統暫停 (休眠) 狀態與停用 Wi-Fi 的差異。

wifi.scan 值是用來測量 Wi-Fi 掃描連線時的耗電量 點。應用程式可使用 WifiManager 類別觸發 Wi-Fi 掃描作業 startScan()API:您也可以開啟「設定」>會執行存取點的 Wi-Fi 會每隔幾秒進行掃描,並呈現明顯的耗電量高低,但請務必減去螢幕 以及力量進行測試

注意:請使用控制設定 (例如 iperf),以便產生網路接收和傳輸 流量