คุณสามารถระบุการใช้พลังงานของส่วนประกอบแต่ละอย่างได้โดยการเปรียบเทียบการวาดในปัจจุบันโดยองค์ประกอบ เมื่อคอมโพเนนต์อยู่ในสถานะที่ต้องการ (เช่น เปิด ใช้งานอยู่ สแกน) และเมื่อ คอมโพเนนต์ปิดอยู่ วัดค่ากระแสไฟฟ้าทันทีโดยเฉลี่ยที่วาดบนอุปกรณ์ที่ แรงดันไฟฟ้าต่ำโดยใช้เครื่องตรวจสอบกำลังไฟฟ้าภายนอก เช่น แหล่งจ่ายไฟหรือแหล่งจ่ายไฟพิเศษ เครื่องมือตรวจสอบแบตเตอรี่ (เช่น Monsoon Solution Inc. Power Monitor และ Power Tool Software)
ผู้ผลิตมักจะให้ข้อมูลเกี่ยวกับส่วนประกอบแต่ละอย่างที่ใช้อยู่ในปัจจุบัน ใช้ข้อมูลนี้หากแสดงพลังงานปัจจุบันที่ดึงมาจากแบตเตอรี่ของอุปกรณ์อย่างถูกต้องใน ฝึกฝน อย่างไรก็ตาม ให้ตรวจสอบค่าที่ได้จากผู้ผลิตก่อนใช้ค่าเหล่านั้นในอุปกรณ์ โปรไฟล์พลังงาน
ควบคุมการใช้พลังงาน
เมื่อวัด ให้ตรวจสอบว่าอุปกรณ์ไม่มีการเชื่อมต่อกับแหล่งชาร์จภายนอก เป็นการเชื่อมต่อ USB กับโฮสต์การพัฒนาที่ใช้เมื่อเรียกใช้ Android Debug Bridge (adb) อุปกรณ์ ขณะทดสอบอาจดึงกระแสจากโฮสต์ ดังนั้นจึงลดการวัดที่แบตเตอรี่ หลีกเลี่ยงการใช้ USB การเชื่อมต่อ On-The-Go (OTG) เนื่องจากอุปกรณ์ OTG อาจดึงข้อมูลปัจจุบันจากอุปกรณ์ที่อยู่ระหว่างการทดสอบ
ระบบควรทำงานที่ระดับพลังงานคงที่เมื่อไม่รวมคอมโพเนนต์ที่กำลังวัด เพื่อหลีกเลี่ยงการวัดที่ไม่ถูกต้องซึ่งเกิดจากการเปลี่ยนแปลงของส่วนประกอบอื่นๆ ระบบ กิจกรรมที่อาจทําให้เกิดการเปลี่ยนแปลงที่ไม่พึงประสงค์ต่อการวัดกำลังไฟฟ้า ได้แก่
- กิจกรรมการรับ ส่งข้อมูล หรือการสแกนเครือข่ายมือถือ, Wi-Fi และบลูทูธ วันและเวลา ไม่ได้วัดพลังงานสัญญาณมือถือ ตั้งค่าอุปกรณ์เป็นโหมดบนเครื่องบินและเปิดใช้ Wi-Fi หรือบลูทูธเป็น เหมาะสม
- เปิด/ปิดหน้าจอ สีที่แสดงขณะหน้าจอเปิดอยู่อาจส่งผลต่อการวาด เกี่ยวกับเทคโนโลยีหน้าจอบางอย่าง ปิดหน้าจอเมื่อวัดค่าสำหรับคอมโพเนนต์ที่ไม่ใช่หน้าจอ
- ระงับ/กลับมาใช้งานอีกครั้ง สถานะปิดหน้าจออาจทำให้เกิดการระงับระบบ วางส่วนต่างๆ ของอุปกรณ์ในสถานะใช้พลังงานต่ำหรือปิด ซึ่งอาจส่งผลต่อการใช้พลังงานของ ส่วนประกอบที่มีการวัดค่าและทำให้เกิดความแปรปรวนอย่างมากในค่าที่อ่านได้เนื่องจากระบบเป็นระยะๆ กลับมาทำงานอีกครั้งเพื่อส่งสัญญาณเตือน ฯลฯ โปรดดูรายละเอียดที่ระบบการควบคุม ระงับ
- CPU เปลี่ยนความเร็วและการป้อน/ออกจากสถานะไม่มีการใช้งานเครื่องจัดตารางเวลาพลังงานต่ำ
ในระหว่างการทำงานตามปกติ ระบบจะปรับความเร็วของ CPU บ่อยครั้ง หรือจำนวนออนไลน์
แกน CPU และสถานะแกนอื่นๆ ของระบบ เช่น ความเร็วบัสหน่วยความจำและแรงดันไฟฟ้าของรางไฟฟ้า
ที่เกี่ยวข้องกับ CPU และหน่วยความจำ ในระหว่างการทดสอบ การปรับเหล่านี้จะส่งผลต่อการวัดกำลังไฟฟ้า
- การดำเนินการปรับขนาดความเร็วของ CPU สามารถลดจำนวนระดับนาฬิกาและแรงดันไฟฟ้าของบัสหน่วยความจำ และองค์ประกอบหลักอื่นๆ ของระบบ
- กิจกรรมการกำหนดเวลาอาจส่งผลต่อเปอร์เซ็นต์ของเวลาที่ CPU ใช้ในการอยู่ในสถานะไม่มีการใช้งานที่ใช้พลังงานต่ำ ดูรายละเอียดเกี่ยวกับการป้องกันไม่ให้การปรับเปลี่ยนเหล่านี้เกิดขึ้นระหว่างการทดสอบได้ที่ การควบคุมความเร็วของ CPU
ตัวอย่างเช่น Joe Droid ต้องการคำนวณค่า screen.on
สำหรับอุปกรณ์ เขา
เปิดใช้โหมดบนเครื่องบินในอุปกรณ์, เรียกใช้อุปกรณ์ในสถานะปัจจุบันที่เสถียร, ใช้ CPU ค้างไว้
ความเร็วคงที่ และใช้การทำงานขณะล็อกบางส่วนเพื่อป้องกันการระงับระบบ แล้ว Joe หมุนอุปกรณ์
ปิดหน้าจอและทำการวัดค่า (200 mA) ต่อไป โจ้เปิดหน้าจออุปกรณ์เป็นอย่างต่ำ
ความสว่าง แล้ววัดค่าอีกครั้ง (300 mA) ค่า screen.on
คือ
100 mA (300 - 200)
หมายเหตุ: สําหรับคอมโพเนนต์ที่ไม่มีรูปแบบคลื่นแบนของการบริโภคปัจจุบันเมื่อ ใช้งานอยู่ (เช่น วิทยุเครือข่ายมือถือหรือ Wi-Fi) วัดค่ากระแสไฟฟ้าโดยเฉลี่ยในช่วงเวลาหนึ่งโดยใช้พลังงานไฟฟ้า เครื่องมือตรวจสอบ
ระบบอาจพบว่าเมื่อใช้แหล่งจ่ายไฟภายนอกแทนแบตเตอรี่ของอุปกรณ์ ปัญหาที่เกิดจากเทอร์มิสเตอร์แบตเตอรี่ที่ไม่ได้ต่อหรือพินเกจวัดเชื้อเพลิงในตัว (เช่น ค่าที่ไม่ถูกต้อง การอ่านค่าอุณหภูมิของแบตเตอรี่หรือความจุแบตเตอรี่ที่เหลืออยู่อาจปิดเคอร์เนลหรือ Android ) แบตเตอรี่ปลอมสามารถให้สัญญาณบนเทอร์มิสเตอร์หรือพินเกจวัดเชื้อเพลิงที่เลียนแบบอุณหภูมิ และค่าสถานะการอ่านค่าสำหรับระบบปกติ และยังอาจให้โอกาสในการขายที่สะดวกสำหรับ การเชื่อมต่อกับแหล่งจ่ายไฟภายนอก หรือคุณสามารถปรับเปลี่ยนระบบโดยไม่สนใจ ข้อมูลที่ไม่ถูกต้องจากแบตเตอรี่ที่หายไป
การระงับระบบควบคุม
ส่วนนี้อธิบายวิธีหลีกเลี่ยงสถานะระงับระบบเมื่อคุณไม่ต้องการให้รบกวน กับการวัดอื่นๆ และวิธีวัดการดึงไฟของสถานะระงับระบบเมื่อคุณทำ ต้องการวัด
ป้องกันการระงับระบบ
การระงับระบบอาจทำให้เกิดความแปรปรวนที่ไม่พึงประสงค์ในการวัดกำลังไฟฟ้าและตำแหน่งของส่วนประกอบของระบบ ในสถานะพลังงานต่ำซึ่งไม่เหมาะสมสำหรับการวัดการใช้พลังงานในขณะนั้น หากต้องการป้องกันไม่ให้ระบบ ระงับขณะที่หน้าจอปิดอยู่ ให้ใช้ Wake Lock บางส่วนชั่วคราว เชื่อมต่อโดยใช้สาย USB อุปกรณ์ไปยังโฮสต์การพัฒนา จากนั้นออกคำสั่งต่อไปนี้
adb shell "echo temporary > /sys/power/wake_lock"
ขณะอยู่ใน wake_lock
สถานะปิดหน้าจอจะไม่เรียกใช้การระงับระบบ
(อย่าลืมถอดสาย USB ออกจากอุปกรณ์ก่อนที่จะวัดการใช้พลังงาน)
วิธีนำการทำงานขณะล็อกออก
adb shell "echo temporary > /sys/power/wake_unlock"
วัดการระงับของระบบ
หากต้องการวัดการดึงไฟฟ้าระหว่างสถานะระงับระบบ ให้วัดค่า
cpu.idle
ในโปรไฟล์พลังงาน ก่อนวัดผล ให้ทำดังนี้
- นำการทำงานขณะล็อกที่มีอยู่ออก (ตามที่อธิบายไว้ด้านบน)
- วางอุปกรณ์ไว้ในโหมดบนเครื่องบินเพื่อหลีกเลี่ยงกิจกรรมที่เกิดขึ้นพร้อมกันจากวิทยุเครือข่ายมือถือ ซึ่ง อาจทำงานบนโปรเซสเซอร์ที่แยกต่างหากจากส่วน SoC ที่ควบคุมโดยการระงับของระบบ
- ตรวจสอบว่าระบบอยู่ในสถานะระงับ โดยทำดังนี้
- ยืนยันว่าค่าที่อ่านได้ในปัจจุบันคือค่าคงที่ การอ่านควรอยู่ในช่วงที่คาดไว้ ช่วงสำหรับการใช้พลังงานของสถานะระงับ SoC บวกกับการใช้พลังงานของระบบ คอมโพเนนต์ที่ยังคงใช้พลังงานอยู่ (เช่น USB PHY)
- กำลังตรวจสอบเอาต์พุตของคอนโซลระบบ
- คอยระวังสัญญาณบ่งบอกสถานะระบบจากภายนอก (เช่น ไฟ LED ดับเมื่อไม่ได้อยู่ในระบบ ระงับ)
ควบคุมความเร็วของ CPU
CPU ที่ใช้งานอยู่อาจทําให้ CPU มีสถานะออนไลน์หรือทําให้เป็นออฟไลน์ ระบุความเร็วของนาฬิกา และเชื่อมโยง แรงดันไฟฟ้าเปลี่ยนไป (ซึ่งอาจส่งผลต่อความเร็วของบัสหน่วยความจำและสถานะกำลังหลักอื่นๆ ของระบบ) และสามารถป้อนสถานะเมื่อไม่มีการใช้งานพลังงานที่ต่ำลงขณะอยู่ในลูปเมื่อไม่มีการใช้งานของเคอร์เนล เมื่อวัด CPU ที่ต่างกัน สถานะพลังงานสำหรับโปรไฟล์พลังงาน หลีกเลี่ยงความแปรปรวนของการดึงพลังงานเมื่อวัดพารามิเตอร์อื่นๆ โปรไฟล์พลังงานจะถือว่า CPU ทั้งหมดมีความเร็วและลักษณะพลังงานแบบเดียวกัน
ขณะวัดกำลังของ CPU หรือถือพลังงานของ CPU ให้คงที่เพื่อทำการวัดอื่นๆ ให้คงไว้
จำนวน CPU ทำให้ออนไลน์คงที่ (เช่น มี CPU 1 ตัวออนไลน์และตัวที่เหลือ
ออฟไลน์/ฮ็อตเสียบ) การเก็บ CPU ทั้งหมดไว้ ยกเว้น 1 ตัวขณะไม่มีความเคลื่อนไหวในการตั้งเวลา อาจเป็นผลิตภัณฑ์ที่ยอมรับได้
ผลลัพธ์ การหยุดเฟรมเวิร์ก Android ที่มี adb shell stop
อาจลดระบบได้
กิจกรรมตามกำหนดการ
คุณต้องระบุความเร็วของ CPU ที่พร้อมใช้งานสำหรับอุปกรณ์ในโปรไฟล์พลังงาน
cpu.speeds
รายการ หากต้องการดูรายการความเร็ว CPU ที่ใช้ได้ ให้เรียกใช้คำสั่งต่อไปนี้
adb shell cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state
ความเร็วเหล่านี้ตรงกับการวัดกำลังไฟฟ้าที่เกี่ยวข้องในค่า cpu.active
สำหรับแพลตฟอร์มที่จำนวนแกนประมวลผลออนไลน์ส่งผลต่อการใช้พลังงานอย่างมาก อาจต้องแก้ไขไดรเวอร์ CPU หรือผู้กำกับดูแลของแพลตฟอร์ม แพลตฟอร์มส่วนใหญ่รองรับ การควบคุมความเร็วของ CPU โดยใช้ตัวกำกับดูแล CPU ของ Userspace และใช้อินเทอร์เฟซ Sysfs เพื่อตั้งค่า อย่างรวดเร็ว เช่น ในการตั้งค่าความเร็ว 200MHz ในระบบที่มี CPU 1 CPU หรือ CPU ทั้งหมดที่ใช้ร่วมกัน นโยบาย CPU ทั่วไป ให้ใช้คอนโซลระบบหรือ adb shell เพื่อเรียกใช้คำสั่งต่อไปนี้
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 ทำงานจริง (สำหรับการยืนยัน) หากการตั้งค่าปัจจุบัน ความเร็วขั้นต่ำก่อนการดำเนินการสูงกว่า 200, 000 คุณอาจต้องเปลี่ยนลำดับ ของสองบรรทัดแรก หรือเรียกใช้บรรทัดแรกอีกครั้งเพื่อลดความเร็วขั้นต่ำก่อน กำลังกำหนดความเร็วสูงสุด
หากต้องการวัดปริมาณการใช้งานปัจจุบันที่ CPU ทำงานด้วยความเร็วต่างๆ ให้ใช้คอนโซลของระบบเพื่อวาง CPU ในลูปขอบเขต CPU โดยใช้คำสั่ง:
# while true; do true; done
วัดค่าขณะที่วนซ้ำดำเนินการ
อุปกรณ์บางรุ่นอาจจำกัดความเร็ว CPU สูงสุด ขณะใช้การควบคุมความร้อนเนื่องจาก การวัดอุณหภูมิ (หลังจากใช้ CPU ด้วยความเร็วสูงเป็นระยะเวลานาน) สำหรับนาฬิกา โดยใช้เอาต์พุตคอนโซลระบบเมื่อทำการวัด หรือด้วยการตรวจสอบ บันทึกเคอร์เนลหลังจากวัดค่าแล้ว
สำหรับค่า cpu.awake
ให้วัดพลังงานที่ใช้เมื่อระบบไม่ได้อยู่ในระบบ
ระงับและไม่ทำงาน CPU ควรอยู่ในลูปเครื่องจัดตารางเวลาพลังงานต่ำ
ซึ่งอาจใช้คำสั่ง Wait For Event ของ ARM หรืออยู่ในสถานะใช้พลังงานต่ำเฉพาะ SoC
พร้อมเวลาในการตอบสนองแบบรวดเร็วซึ่งเหมาะสำหรับการใช้งานเมื่อไม่มีการใช้งาน
สําหรับค่า cpu.active
ให้วัดพลังงานเมื่อระบบไม่ได้อยู่ในโหมดระงับและ
ไม่ได้ทำงาน CPU 1 รายการ (โดยปกติจะเป็น CPU หลัก) ควรทำงานในขณะที่ CPU อื่นๆ ทั้งหมด
ควรอยู่ในสถานะไม่ใช้งาน
วัดพลังงานของหน้าจอ
เมื่อวัดการเปิดหน้าจอ ให้ตรวจสอบว่าอุปกรณ์อื่นๆ เปิดอยู่ตามปกติเมื่อหน้าจอเปิดอยู่ เปิดอยู่ด้วย เช่น หากหน้าจอสัมผัสและแบ็กไลต์ของจอแสดงผลเปิดอยู่ตามปกติ เมื่อหน้าจอเปิดอยู่ เพื่อให้แน่ใจว่าอุปกรณ์เหล่านี้เปิดอยู่เมื่อคุณวัด เพื่อให้ได้ตัวอย่างที่สมจริง เมื่อพูดถึงการใช้พลังงาน
เทคโนโลยีการแสดงผลบางอย่างจะมีปริมาณการใช้พลังงานแตกต่างกันไปตามสีที่แสดง ทำให้ ผลการวัดพลังงานจะแตกต่างกันไปอย่างมาก ขึ้นอยู่กับสิ่งที่แสดงบนหน้าจอ ณ เวลา การวัดผล ขณะที่วัด ให้ตรวจสอบว่าหน้าจอกำลังแสดงสิ่งที่มีพลังงาน ของหน้าจอที่สมจริง เล็งระหว่างขอบของจอสีดำทั้งหน้า (ซึ่ง ใช้พลังงานต่ำสุดสำหรับเทคโนโลยีบางอย่าง) และหน้าจอสีขาวทั้งหมด ตัวเลือกทั่วไปคือการดู ของกำหนดการในแอปปฏิทิน ซึ่งมีพื้นหลังสีขาวและองค์ประกอบที่ไม่ใช่สีขาว
วัดกำลังไฟหน้าจอที่ระดับความสว่างต่ำสุดและสูงสุดของจอแสดงผล/ไฟแบ็กไลต์ วิธีตั้งค่าความสว่างขั้นต่ำ
- ใช้ UI ของ Android (ไม่แนะนำ) ตั้งค่าการตั้งค่า > ความสว่างของจอแสดงผล เลื่อนไปที่ความสว่างต่ำสุดของจอแสดงผล อย่างไรก็ตาม 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 เพื่อเข้าถึง
คะแนน แอปพลิเคชันสามารถเรียกใช้การสแกน Wi-Fi โดยใช้คลาส WifiManager
startScan()
API หรือจะเปิดการตั้งค่า > ก็ได้ Wi-Fi ซึ่งดำเนินการจุดเข้าใช้งาน
สแกนทุก 2-3 วินาทีโดยมีการใช้พลังงานเพิ่มขึ้นอย่างเห็นได้ชัด แต่คุณต้องลบหน้าจอออก
พลังงานจากหน่วยวัดเหล่านี้
หมายเหตุ: ใช้การตั้งค่าที่มีการควบคุม (เช่น iperf) เพื่อสร้างการรับและส่งเครือข่าย การเข้าชม