วัดกำลังของคอมโพเนนต์

คุณสามารถระบุการใช้พลังงานของส่วนประกอบแต่ละอย่างได้โดยการเปรียบเทียบการวาดในปัจจุบันโดยองค์ประกอบ เมื่อคอมโพเนนต์อยู่ในสถานะที่ต้องการ (เช่น เปิด ใช้งานอยู่ สแกน) และเมื่อ คอมโพเนนต์ปิดอยู่ วัดค่ากระแสไฟฟ้าทันทีโดยเฉลี่ยที่วาดบนอุปกรณ์ที่ แรงดันไฟฟ้าต่ำโดยใช้เครื่องตรวจสอบกำลังไฟฟ้าภายนอก เช่น แหล่งจ่ายไฟหรือแหล่งจ่ายไฟพิเศษ เครื่องมือตรวจสอบแบตเตอรี่ (เช่น 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) เพื่อสร้างการรับและส่งเครือข่าย การเข้าชม