การวัดค่าพลังงาน

ผู้ผลิตอุปกรณ์ต้องระบุโปรไฟล์พลังงานส่วนประกอบใน /frameworks/base/core/res/res/xml/power_profile.xml

ในการกำหนดค่าโปรไฟล์พลังงาน ให้ใช้ฮาร์ดแวร์ที่วัดพลังงานที่อุปกรณ์ใช้และดำเนินการต่างๆ ที่ต้องการข้อมูล วัดการใช้พลังงานระหว่างการดำเนินการเหล่านั้นและคำนวณค่าต่างๆ (ซึ่งมาจากความแตกต่างจากการใช้พลังงานพื้นฐานอื่นๆ ตามความเหมาะสม)

เนื่องจากเป้าหมายของโปรไฟล์พลังงานคือการประมาณการแบตเตอรี่หมดอย่างเหมาะสม ค่าโปรไฟล์พลังงานจะแสดงเป็นกระแสไฟ (แอมป์) เฟรมเวิร์กของ Android จะคูณกระแสตามเวลาที่ระบบย่อยทำงานอยู่และคำนวณค่า mAh ซึ่งใช้ประเมินปริมาณแบตเตอรี่ที่แอปพลิเคชัน/ระบบย่อยใช้ไป

อุปกรณ์ที่มีตัวควบคุมบลูทูธ โมเด็ม และ Wi-Fi ที่ใช้ Android 7.0 ขึ้นไปสามารถให้ค่าพลังงานเพิ่มเติมที่ได้รับจากข้อมูลชิปเซ็ต

อุปกรณ์ที่มีซีพียูต่างกัน

โปรไฟล์พลังงานสำหรับอุปกรณ์ที่มีแกน CPU ของสถาปัตยกรรมต่างกันต้องมีฟิลด์เพิ่มเติมต่อไปนี้:

  • จำนวน CPU ทั้งหมดสำหรับแต่ละคลัสเตอร์ (แสดงใน cpu.clusters.cores)
  • ความเร็ว CPU รองรับโดยแต่ละคลัสเตอร์
  • การใช้พลังงาน CPU ที่ใช้งานอยู่สำหรับแต่ละคลัสเตอร์

หากต้องการแยกความแตกต่างระหว่างการใช้พลังงานของ CPU ที่ใช้งานอยู่และความเร็วของ CPU ที่สนับสนุนสำหรับคลัสเตอร์ ให้ผนวกหมายเลขคลัสเตอร์เข้ากับชื่อของอาร์เรย์ หมายเลขคลัสเตอร์ถูกกำหนดตามลำดับของคอร์ CPU ในแผนผังอุปกรณ์เคอร์เนล ตัวอย่างเช่น ในสถาปัตยกรรมที่ต่างกันซึ่งมีคลัสเตอร์สอง (2) คอร์ที่มีคอร์สี่ (4) คอร์:

  • cluster0 ประกอบด้วย cpu0-3
  • คลัสเตอร์ 1 ประกอบด้วย cpu4-7

กรอบงาน Android ใช้หมายเลขหลักของ CPU เหล่านี้เมื่ออ่านสถิติจากไฟล์ sysfs ใน: /sys/devices/system/cpu/cpu<number>/cpufreq/stats

ตัวอย่างของคลัสเตอร์ CPU และความเร็ว:

<array name="cpu.active.cluster0">
<value>200</value>
<value>300</value>
<value>400</value>
</array>
<array name="cpu.speeds.cluster0">
<value>600000</value>
<value>800000</value>
<value>1200000</value>
</array>

<array name="cpu.active.cluster1">
<value>400</value>
<value>500</value>
<value>600</value>
</array>
<array name="cpu.speeds.cluster1">
<value>800000</value>
<value>1200000</value>
<value>1400000</value>
</array>

ค่าพลัง

ตารางต่อไปนี้อธิบายการตั้งค่าค่าพลังงานที่ใช้ได้ ในการดูไฟล์ตัวอย่างใน AOSP โปรดดู ที่ power_profile.xml

ชื่อ คำอธิบาย ตัวอย่างค่า หมายเหตุ
Ambient.on พลังงานเพิ่มเติมที่ใช้เมื่อหน้าจออยู่ในโหมด doze/ambient/always-on แทนการปิด ประมาณ 100 mA -
screen.on พลังงานเพิ่มเติมที่ใช้เมื่อเปิดหน้าจอที่ความสว่างขั้นต่ำ 200 mA รวมตัวควบคุมแบบสัมผัสและไฟแบ็คไลท์ของจอแสดงผล ที่ความสว่าง 0 ไม่ใช่ขั้นต่ำของ Android ซึ่งมีแนวโน้มว่าจะอยู่ที่ 10 หรือ 20%
screen.full พลังงานเพิ่มเติมที่ใช้เมื่อหน้าจอมีความสว่างสูงสุด เมื่อเทียบกับหน้าจอที่ความสว่างต่ำสุด 100 mA-300 mA ส่วนหนึ่งของค่านี้ (ขึ้นอยู่กับความสว่างของหน้าจอ) จะถูกเพิ่มลงในค่า screen.on เพื่อคำนวณการใช้พลังงานของหน้าจอ
wifi.on พลังงานเพิ่มเติมที่ใช้เมื่อเปิด Wi-Fi แต่ไม่ได้รับ ส่ง หรือสแกน 2 mA -
wifi.active พลังงานเพิ่มเติมที่ใช้เมื่อส่งหรือรับผ่าน Wi-Fi 31 mA -
wifi.scan พลังงานเพิ่มเติมที่ใช้เมื่อ Wi-Fi กำลังสแกนหาจุดเข้าใช้งาน 100 mA -
เสียง พลังงานเพิ่มเติมที่ใช้เมื่อถอดรหัส/เข้ารหัสเสียงผ่าน DSP ประมาณ 10 mA ใช้สำหรับเสียง DSP
วีดีโอ พลังงานเพิ่มเติมที่ใช้เมื่อถอดรหัสวิดีโอผ่าน DSP ประมาณ 50 mA ใช้สำหรับวิดีโอ DSP
กล้อง.avg การใช้พลังงานโดยเฉลี่ยของระบบย่อยของกล้องสำหรับแอปพลิเคชันกล้องทั่วไป 600 mA มีวัตถุประสงค์เพื่อใช้เป็นค่าประมาณคร่าวๆ สำหรับแอปพลิเคชันที่เรียกใช้การแสดงตัวอย่างและถ่ายภาพความละเอียดเต็มประมาณ 10 ภาพต่อนาที
กล้อง.ไฟฉาย กำลังเฉลี่ยที่โมดูลแฟลชของกล้องใช้เมื่อเปิดเครื่อง 200 mA -
gps.signalqualitybased พลังงานเพิ่มเติมที่ใช้โดย GPS ตามความแรงของสัญญาณ นี่คือรายการที่มีหลายค่า หนึ่งค่าต่อความแรงของสัญญาณ จากอ่อนสุดไปหาเข้มที่สุด 30 mA, 10 mA -
gps.on พลังงานเพิ่มเติมที่ใช้เมื่อ GPS กำลังรับสัญญาณ 50 mA -
กัมมันตรังสี พลังงานเพิ่มเติมที่ใช้เมื่อมีการส่ง/รับวิทยุเคลื่อนที่ 100 mA-300 mA -
radio.scanning พลังงานเพิ่มเติมที่ใช้เมื่อวิทยุมือถือทำการเพจหอคอย 1.2 mA -
radio.on พลังงานเพิ่มเติมที่ใช้เมื่อเปิดวิทยุมือถือ นี่คือรายการที่มีหลายค่า หนึ่งค่าต่อความแรงของสัญญาณ (ไม่มีสัญญาณ อ่อน ปานกลาง แรง) 1.2 mA วิทยุบางรุ่นจะเพิ่มพลังเมื่อค้นหาเสาสัญญาณและตรวจไม่พบสัญญาณ ค่าจะเท่ากันหรือลดลงได้เมื่อความแรงของสัญญาณเพิ่มขึ้น หากคุณระบุเพียงค่าเดียว ค่าเดียวกันจะถูกใช้สำหรับจุดแข็งทั้งหมด หากคุณระบุค่าสองค่า ค่าแรกจะใช้สำหรับการไม่มีสัญญาณ ค่าที่สองจะใช้สำหรับค่าความแรงอื่นๆ ทั้งหมด และอื่นๆ
Bluetooth.controller.idle กระแสไฟเฉลี่ย (mA) ของคอนโทรลเลอร์ Bluetooth เมื่อไม่ได้ใช้งาน - ค่าเหล่านี้ไม่ได้ประมาณการ แต่นำมาจากแผ่นข้อมูลของคอนโทรลเลอร์ หากมีสถานะการรับหรือส่งหลายสถานะ ค่าเฉลี่ยของรัฐเหล่านั้นจะถูกนำมา นอกจากนี้ ขณะนี้ระบบได้รวบรวมข้อมูลสำหรับ การสแกนพลังงานต่ำ (LE) และบลูทูธ

Android 7.0 และใหม่กว่าจะไม่ใช้ค่าพลังงาน Bluetooth สำหรับ Bluetooth.active อีกต่อไป (ใช้เมื่อเล่นเสียงผ่าน Bluetooth A2DP) และ Bluetooth.on (ใช้เมื่อ Bluetooth เปิดอยู่แต่ไม่ได้ใช้งาน)
bluetooth.controller.rx กระแสไฟเฉลี่ย (mA) ของคอนโทรลเลอร์ Bluetooth เมื่อรับ -
bluetooth.controller.tx กระแสไฟเฉลี่ย (mA) ของคอนโทรลเลอร์ Bluetooth เมื่อส่งสัญญาณ -
Bluetooth.controller.voltage แรงดันใช้งานเฉลี่ย (mV) ของคอนโทรลเลอร์ Bluetooth -
โมเด็ม.controller.sleep กระแสไฟเฉลี่ย (mA) ของตัวควบคุมโมเด็มเมื่ออยู่ในโหมดสลีป 0 mA ค่าเหล่านี้ไม่ได้ประมาณการ แต่นำมาจากแผ่นข้อมูลของคอนโทรลเลอร์ หากมีสถานะการรับหลายสถานะ ค่าเฉลี่ยของสถานะเหล่านั้นจะถูกนำมา หากมีสถานะการส่งหลายสถานะ การระบุค่าสำหรับแต่ละสถานะการส่งจะได้รับการสนับสนุนโดยเริ่มใน Android 9
modem.controller.idle การดึงกระแสไฟเฉลี่ย (mA) ของตัวควบคุมโมเด็มเมื่อไม่ได้ใช้งาน -
modem.controller.rx กระแสไฟเฉลี่ย (mA) ของตัวควบคุมโมเด็มเมื่อรับ -
โมเด็ม.controller.tx การดึงกระแสไฟเฉลี่ย (mA) ของตัวควบคุมโมเด็มเมื่อส่งสัญญาณที่ระดับพลังงาน RF ที่ต่างกัน นี่คือรายการแบบหลายค่าที่มีหนึ่งค่าต่อระดับกำลังส่ง 100 mA, 200 mA, 300 mA, 400 mA, 500 mA
โมเด็ม.controller.voltage แรงดันใช้งานเฉลี่ย (mV) ของตัวควบคุมโมเด็ม -
wifi.controller.idle กระแสไฟเฉลี่ย (mA) ของคอนโทรลเลอร์ Wi-Fi เมื่อไม่ได้ใช้งาน - ค่าเหล่านี้ไม่ได้ประมาณการ แต่นำมาจากแผ่นข้อมูลของคอนโทรลเลอร์ หากมีสถานะการรับหรือส่งหลายสถานะ ค่าเฉลี่ยของรัฐเหล่านั้นจะถูกนำมา
wifi.controller.rx การดึงกระแสไฟเฉลี่ย (mA) ของคอนโทรลเลอร์ Wi-Fi เมื่อรับ -
wifi.controller.tx กระแสไฟเฉลี่ย (mA) ของคอนโทรลเลอร์ Wi-Fi เมื่อส่งสัญญาณ -
wifi.controller.voltage แรงดันใช้งานเฉลี่ย (mV) ของคอนโทรลเลอร์ Wi-Fi -
cpu.speeds นี่คือรายการแบบหลายค่าที่แสดงรายการความเร็ว CPU ที่เป็นไปได้แต่ละรายการในหน่วย KHz 125000 KHz, 250000 KHz, 500000 KHz, 1000000 KHz, 150,000 KHz จำนวนและลำดับของรายการต้องสอดคล้องกับรายการ mA ใน cpu.active
cpu.idle กำลังทั้งหมดที่ใช้โดยระบบเมื่อ CPU (และ SoC) อยู่ในสถานะระงับระบบ 3 mA -
cpu.awake พลังงานเพิ่มเติมที่ใช้เมื่อ CPU อยู่ในสถานะไม่ได้ใช้งานการตั้งเวลา (เคอร์เนลไม่ได้ใช้งานลูป); ระบบไม่อยู่ในสถานะระงับระบบ 50 mA แพลตฟอร์มของคุณอาจมีสถานะไม่ได้ใช้งานมากกว่าหนึ่งสถานะโดยมีระดับการใช้พลังงานต่างกัน เลือกสถานะไม่ได้ใช้งานที่เป็นตัวแทนสำหรับช่วงเวลาที่ไม่ได้ใช้งานตัวกำหนดตารางเวลานานขึ้น (หลายมิลลิวินาที) ตรวจสอบกราฟกำลังบนอุปกรณ์การวัดของคุณ และเลือกตัวอย่างที่ CPU ใช้พลังงานน้อยที่สุด โดยทิ้งตัวอย่างที่สูงขึ้นเมื่อ CPU ออกจากรอบเดินเบา
cpu.active พลังงานเพิ่มเติมที่ CPU ใช้เมื่อทำงานด้วยความเร็วที่ต่างกัน 100 mA, 120 mA, 140 mA, 160 mA, 200 mA ค่าหมายถึงกำลังที่ใช้โดยราง CPU เมื่อทำงานที่ความเร็วต่างกัน ตั้งค่าความเร็วสูงสุดในเคอร์เนลเป็นความเร็วที่อนุญาตแต่ละรายการและตรึง CPU ไว้ที่ความเร็วนั้น จำนวนและลำดับของรายการสอดคล้องกับจำนวนและลำดับของรายการใน cpu.speeds
cpu.clusters.cores จำนวนคอร์ที่แต่ละคลัสเตอร์ CPU มี 4, 2 จำเป็นสำหรับอุปกรณ์ที่มี สถาปัตยกรรม CPU ต่างกัน เท่านั้น จำนวนรายการและลำดับควรตรงกับจำนวนรายการคลัสเตอร์สำหรับ cpu.active และ cpu.speeds รายการแรกแสดงจำนวนแกน CPU ในคลัสเตอร์0 รายการที่สองแสดงจำนวนแกน CPU ในคลัสเตอร์1 และอื่นๆ
แบตเตอรี่ความจุ ความจุแบตเตอรี่รวมเป็น mAh 3000 mAh -

การสแกนพลังงานต่ำ (LE) และบลูทูธ

สำหรับอุปกรณ์ที่ใช้ Android 7.0 ระบบจะรวบรวมข้อมูลสำหรับการสแกนพลังงานต่ำ (LE) และการรับส่งข้อมูลเครือข่ายบลูทูธ (เช่น RFCOMM และ L2CAP) และเชื่อมโยงกิจกรรมเหล่านี้กับแอปพลิเคชันเริ่มต้น การสแกนบลูทูธจะเชื่อมโยงกับแอปพลิเคชันที่เริ่มการสแกน แต่การสแกนแบบกลุ่มไม่ได้เชื่อมโยง (และจะเชื่อมโยงกับแอปพลิเคชัน Bluetooth แทน) สำหรับการสแกนแอปพลิเคชันเป็นเวลา N มิลลิวินาที ค่าใช้จ่ายในการสแกนคือ N มิลลิวินาทีของเวลา rx และ N มิลลิวินาทีของเวลา tx; เวลาตัวควบคุมที่เหลือทั้งหมดถูกกำหนดให้กับการรับส่งข้อมูลเครือข่ายหรือแอปพลิเคชัน Bluetooth