ผู้ผลิตอุปกรณ์ต้องระบุโปรไฟล์การใช้พลังงานของคอมโพเนนต์ใน
/frameworks/base/core/res/res/xml/power_profile.xml
หากต้องการกำหนดค่าสำหรับโปรไฟล์พลังงาน ให้ใช้อุปกรณ์ที่วัดพลังงาน ที่อุปกรณ์ใช้ และดำเนินการต่างๆ ที่ต้องใช้ ข้อมูล วัดการใช้พลังงานระหว่างการดำเนินการเหล่านั้นและคำนวณ ค่า (หาความแตกต่างจากการใช้พลังงานพื้นฐานอื่นๆ ตามความเหมาะสม)
เนื่องจากเป้าหมายของโปรไฟล์พลังงานคือการประมาณการใช้แบตเตอรี่อย่างเหมาะสม ค่าโปรไฟล์พลังงานจึงระบุเป็นกระแสไฟฟ้า (แอมป์) เฟรมเวิร์ก Android จะคูณค่าปัจจุบันด้วยเวลาที่ระบบย่อยทำงานอยู่ และคำนวณค่า mAh ซึ่งจะใช้ในการประมาณปริมาณแบตเตอรี่ ที่แอปหรือระบบย่อยใช้
อุปกรณ์ที่มีตัวควบคุมบลูทูธ โมเด็ม และ Wi-Fi ที่ใช้ Android 7.0 ขึ้นไปจะระบุค่ากำลังเพิ่มเติมที่ได้จากข้อมูลชิปเซ็ตได้
อุปกรณ์ที่มี CPU แบบต่างกัน
โปรไฟล์การใช้พลังงานสำหรับอุปกรณ์ที่มีแกน CPU ของสถาปัตยกรรมแบบไม่เหมือนกัน ต้องมีฟิลด์เพิ่มเติมต่อไปนี้
- จำนวน CPU ทั้งหมดสำหรับแต่ละคลัสเตอร์ (แสดงใน cpu.clusters.cores)
- ความเร็ว CPU ที่คลัสเตอร์แต่ละรายการรองรับ
- การใช้พลังงาน CPU ที่ใช้งานอยู่สำหรับแต่ละคลัสเตอร์
หากต้องการแยกความแตกต่างระหว่างการใช้พลังงาน CPU ที่ใช้งานอยู่กับความเร็ว CPU ที่รองรับสำหรับคลัสเตอร์ ให้ต่อท้ายหมายเลขคลัสเตอร์กับชื่ออาร์เรย์ ระบบจะกำหนดหมายเลขคลัสเตอร์ ตามลำดับของแกน CPU ในแผนผังอุปกรณ์ของเคอร์เนล ตัวอย่างเช่น ในสถาปัตยกรรมแบบไม่เหมือนกันซึ่งมี 2 คลัสเตอร์ที่มี 4 คอร์
- cluster0 ประกอบด้วย cpu0-3
- cluster1 ประกอบด้วย 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 | ใช้พลังงานเพิ่มเติมเมื่อหน้าจออยู่ในโหมดพัก/โหมดแอมเบียนท์/โหมดเปิดตลอดเวลาแทนที่จะปิด | ประมาณ 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 |
camera.avg | การใช้พลังงานโดยเฉลี่ยของระบบย่อยของกล้องสำหรับแอปกล้องทั่วไป | 600 mA | เป็นค่าประมาณคร่าวๆ สำหรับแอปที่แสดงตัวอย่าง และถ่ายภาพความละเอียดเต็มประมาณ 10 ภาพต่อนาที |
camera.flashlight | กำลังไฟเฉลี่ยที่โมดูลแฟลชของกล้องใช้เมื่อเปิดอยู่ | 200 mA | - |
gps.signalqualitybased | GPS ใช้พลังงานเพิ่มเติมตามความแรงของสัญญาณ รายการนี้เป็นรายการแบบหลายค่า โดยมี 1 ค่าต่อความแรงของสัญญาณ จากอ่อนที่สุดไปจนถึงแรงที่สุด | 30 mA, 10 mA | - |
gps.on | ใช้พลังงานเพิ่มเติมเมื่อ GPS กำลังรับสัญญาณ | 50 mA | - |
radio.active | พลังงานเพิ่มเติมที่ใช้เมื่อสัญญาณโทรศัพท์มือถือส่ง/รับข้อมูล | 100 mA-300 mA | - |
radio.scanning | ใช้พลังงานเพิ่มเติมเมื่อสัญญาณโทรศัพท์มือถือส่งการเรียกไปยังเสา | 1.2 mA | - |
radio.on | พลังงานเพิ่มเติมที่ใช้เมื่อเปิดสัญญาณโทรศัพท์มือถือ รายการนี้เป็นรายการแบบหลายค่า รายการละ 1 รายการต่อความแรงของสัญญาณ (ไม่มีสัญญาณ สัญญาณอ่อน สัญญาณปานกลาง สัญญาณแรง) | 1.2 mA | วิทยุบางรุ่นจะเพิ่มกำลังเมื่อค้นหาสถานีฐานและไม่ ตรวจพบสัญญาณ ค่าอาจเท่ากันหรือลดลงเมื่อความแรงของสัญญาณเพิ่มขึ้น หากระบุเพียงค่าเดียว ระบบจะใช้ค่าเดียวกันกับความแรงทั้งหมด หากคุณระบุ 2 ค่า ระบบจะใช้ค่าแรกสำหรับไม่มีสัญญาณ ค่าที่ 2 สำหรับความแรงอื่นๆ ทั้งหมด และอื่นๆ |
bluetooth.controller.idle | ค่าเฉลี่ยของกระแสไฟฟ้าที่ตัวควบคุมบลูทูธดึงมา (มิลลิแอมป์) เมื่อไม่มีการใช้งาน | - | ค่าเหล่านี้ไม่ใช่ค่าประมาณ แต่ได้มาจากแผ่นข้อมูลของ
คอนโทรลเลอร์ หากมีสถานะรับหรือส่งหลายสถานะ ระบบจะใช้ค่าเฉลี่ย
ของสถานะเหล่านั้น นอกจากนี้ ตอนนี้ระบบยังรวบรวมข้อมูลสำหรับการสแกนบลูทูธและบลูทูธพลังงานต่ำ (LE) ด้วย Android 7.0 ขึ้นไปจะไม่ใช้ค่าพลังงานบลูทูธสำหรับ bluetooth.active (ใช้เมื่อเล่นเสียงผ่านบลูทูธ A2DP) และ bluetooth.on (ใช้เมื่อ บลูทูธเปิดอยู่แต่ไม่ได้ใช้งาน) อีกต่อไป |
bluetooth.controller.rx | ค่าเฉลี่ยการดึงกระแส (มิลลิแอมป์) ของตัวควบคุมบลูทูธเมื่อรับสัญญาณ | - | |
bluetooth.controller.tx | ค่าเฉลี่ยการดึงกระแสไฟฟ้า (มิลลิแอมป์) ของคอนโทรลเลอร์บลูทูธเมื่อส่งสัญญาณ | - | |
bluetooth.controller.voltage | แรงดันไฟฟ้าในการทำงานเฉลี่ย (มิลลิโวลต์) ของตัวควบคุมบลูทูธ | - | |
modem.controller.sleep | ค่าเฉลี่ยของกระแสไฟฟ้าที่ใช้ (มิลลิแอมป์) ของตัวควบคุมโมเด็มขณะสลีป | 0 mA | ค่าเหล่านี้ไม่ใช่ค่าประมาณ แต่มาจากแผ่นข้อมูลของตัวควบคุม หากมีสถานะการรับหลายสถานะ ระบบจะใช้ค่าเฉลี่ยของสถานะเหล่านั้น หากมีสถานะการส่งหลายสถานะ ระบบจะรองรับการระบุค่าสำหรับสถานะการส่งแต่ละสถานะ ตั้งแต่ Android 9 เป็นต้นไป |
modem.controller.idle | ค่าเฉลี่ยของกระแสไฟฟ้าที่ใช้ (มิลลิแอมป์) ของตัวควบคุมโมเด็มเมื่อไม่มีการใช้งาน | - | |
modem.controller.rx | ค่าเฉลี่ยการดึงกระแสไฟฟ้า (mA) ของตัวควบคุมโมเด็มเมื่อรับ | - | |
modem.controller.tx | ค่าเฉลี่ยกระแสไฟฟ้า (mA) ของตัวควบคุมโมเด็มเมื่อส่งสัญญาณที่ระดับกำลัง RF ต่างๆ นี่คือรายการที่มีหลายค่าโดยมี 1 ค่าต่อระดับกำลังส่ง | 100 mA, 200 mA, 300 mA, 400 mA, 500 mA | |
modem.controller.voltage | แรงดันไฟฟ้าในการทำงานเฉลี่ย (มิลลิโวลต์) ของตัวควบคุมโมเด็ม | - | |
wifi.controller.idle | ค่าเฉลี่ยของกระแสไฟฟ้าที่ใช้ (mA) ของตัวควบคุม Wi-Fi เมื่อไม่มีการใช้งาน | - | ค่าเหล่านี้ไม่ใช่ค่าประมาณ แต่ได้มาจากแผ่นข้อมูลของ คอนโทรลเลอร์ หากมีสถานะรับหรือส่งหลายสถานะ ระบบจะใช้ค่าเฉลี่ย ของสถานะเหล่านั้น |
wifi.controller.rx | การดึงกระแสไฟฟ้าเฉลี่ย (มิลลิแอมป์) ของตัวควบคุม Wi-Fi เมื่อรับสัญญาณ | - | |
wifi.controller.tx | ค่าเฉลี่ยของกระแสไฟฟ้าที่ตัวควบคุม Wi-Fi ใช้ (มิลลิแอมป์) เมื่อส่งข้อมูล | - | |
wifi.controller.voltage | แรงดันไฟฟ้าในการทำงานเฉลี่ย (มิลลิโวลต์) ของตัวควบคุม Wi-Fi | - | |
cpu.speeds | นี่คือรายการแบบหลายค่าที่แสดงความเร็ว CPU ที่เป็นไปได้แต่ละค่าในหน่วย KHz | 125000 KHz, 250000 KHz, 500000 KHz, 1000000 KHz, 1500000 KHz | จำนวนและลำดับของรายการต้องสอดคล้องกับรายการ mA ใน cpu.active |
cpu.idle | กำลังไฟทั้งหมดที่ระบบดึงมาเมื่อ CPU (และ SoC) อยู่ในสถานะ หยุดทำงานของระบบ | 3 mA | - |
cpu.awake | ใช้พลังงานเพิ่มเติมเมื่อ CPU อยู่ในสถานะไม่ได้ใช้งานตามกำหนดเวลา (ลูปไม่ได้ใช้งานของเคอร์เนล) ระบบไม่ได้อยู่ในสถานะหยุดระบบชั่วคราว | 50 mA | แพลตฟอร์มอาจมีสถานะว่างมากกว่า 1 สถานะที่ใช้โดยมีระดับการใช้พลังงานที่แตกต่างกัน เลือกสถานะว่างที่เป็นตัวแทนสำหรับระยะเวลาที่ยาวนานขึ้น ของสถานะว่างของตัวจัดตาราง (หลายมิลลิวินาที) ตรวจสอบกราฟพลังงานใน อุปกรณ์วัด และเลือกตัวอย่างที่ 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 และอื่นๆ |
battery.capacity | ความจุแบตเตอรี่รวมในหน่วย mAh | 3,000 mAh | - |
การสแกนพลังงานต่ำ (LE) และบลูทูธ
สำหรับอุปกรณ์ที่ใช้ Android 7.0 ระบบจะรวบรวมข้อมูลสำหรับการสแกนพลังงานต่ำ (LE) และการรับส่งข้อมูลเครือข่ายบลูทูธ (เช่น RFCOMM และ L2CAP) และเชื่อมโยง กิจกรรมเหล่านี้กับแอปที่เริ่มต้นการสแกน การสแกนบลูทูธจะเชื่อมโยง กับแอปที่เริ่มต้นการสแกน แต่การสแกนเป็นกลุ่มจะไม่เชื่อมโยง (และ จะเชื่อมโยงกับแอปบลูทูธแทน) สำหรับแอปที่สแกนเป็นเวลา N มิลลิวินาที ค่าใช้จ่ายในการสแกนคือเวลา rx N มิลลิวินาทีและเวลา tx N มิลลิวินาที ระบบจะกำหนดเวลาที่เหลือทั้งหมดของตัวควบคุมให้กับการรับส่งข้อมูลเครือข่ายหรือแอปบลูทูธ