Kuro Games ลดการใช้พลังงานลง 9.68% ผ่านเครื่องมือวิเคราะห์พลังงานของ Android Studio และ ODPM สำหรับ Wuthering Waves

Wuthering Waves เป็นเกมแอ็กชัน RPG คุณภาพสูงที่พัฒนาโดย Kuro Games การเพิ่มประสิทธิภาพการสิ้นเปลืองพลังงานเป็นสิ่งสำคัญอย่างยิ่งในการมอบประสบการณ์การใช้งานที่ยอดเยี่ยมอย่างยั่งยืนสำหรับเซสชันการเล่นเกมที่ยาวนาน

รูปที่ 1 ภาพหน้าจอของ Wuthering Waves

Android Studio ได้เปิดตัวเครื่องมือวิเคราะห์พลังงานจาก Hedgehog (2023.1.1) ที่สามารถช่วยนักพัฒนาซอฟต์แวร์ทำความเข้าใจข้อมูลการบริโภคพลังงานโดยอิงตาม On Device Power Rails Monitor (ODPM)

ความสามารถในการวิเคราะห์พลังงานใน Android Studio ยังช่วยให้คุณทดสอบการบริโภคพลังงานของฟีเจอร์ในแอป Android ได้อย่างมีประสิทธิภาพด้วย (ดังที่แสดงด้านล่าง)

รูปที่ 2 ภาพหน้าจอเครื่องมือวิเคราะห์พลังงานของ Android Studio

สิ่งที่พวกเขาทำ

Kuro Games เริ่มต้นด้วยการใช้เครื่องมือวิเคราะห์พลังงานของ Android Studio เพื่อทําความเข้าใจว่าลักษณะการทํางานของเกมส่งผลต่อการใช้พลังงานของอุปกรณ์อย่างไร ประสบการณ์นี้ทำให้ทีมพัฒนาเครื่องมือที่ปรับแต่งเองโดยอิงตาม Perfetto และ ODPM โดยรวมการปรับปรุงต่อไปนี้

  • มุมมองที่กําหนดเอง - นักพัฒนาแอปสามารถกรองรางไฟและช่วงเวลาที่ยืดหยุ่นที่กำหนดไว้ล่วงหน้าได้
  • การบำรุงรักษาที่ดีขึ้น - นักพัฒนาแอปสามารถอัปโหลดข้อมูลการใช้พลังงานไปยังระบบ QA ที่ปรับแต่งเองและเปรียบเทียบข้อมูลในเกมเวอร์ชันต่างๆ ได้

ประมวลผลข้อมูล ODPM

Kuro Games ใช้ Perfetto Trace Processor (Python) Metric API เพื่อประมวลผลavg_used_power_mw dataเซสชัน 30 วินาทีจากเมตริก android_powerrails ซึ่งกำหนดเป็น AndroidPowerRails ใน Pertetto metrics proto ในรูปแบบต่อไปนี้เพื่อเข้าถึงข้อมูล ODPM

รางไฟฟ้า คุณภาพกราฟิก FPS ความสว่าง การใช้พลังงานโดยเฉลี่ย เปอร์เซ็นต์(ต่อราง / ทั้งหมด)
power.rail.cpu.big สูง 30 ต่ำ 474.158mW 14.70%
power.rail.cpu.mid สูง 30 ต่ำ 470.916mW 14.60%
power.rail.cpu.little สูง 30 ต่ำ 438.662mW 13.60%
power.rail.gpu สูง 30 ต่ำ 346.761mW 10.70%
... ... ... ... ... ...

ระบุรางจ่ายไฟที่ใช้พลังงานสูง

รางจ่ายไฟแต่ละรางไม่มีค่ามาตรฐาน Kuro Games ได้สร้างการทดสอบ A/B โดยใช้กรณีทดสอบต่างๆ ซึ่งรวมถึงการทดสอบขณะไม่มีการใช้งาน ขณะทำงาน และขณะต่อสู้ เพื่อระบุรางจ่ายไฟที่ใช้พลังงานสูง รางจ่ายไฟที่ค่าสูงอย่างชัดเจนจะระบุได้โดยเปรียบเทียบค่าของรางจ่ายไฟเดียวกัน การเปรียบเทียบความแตกต่างของลักษณะการทำงานในเทสเคสต่างๆ จะช่วยให้ทราบสาเหตุของปัญหาการสิ้นเปลืองพลังงานได้ทีละน้อย

การเพิ่มประสิทธิภาพ

ข้อมูล ODPM ช่วยให้ Kuro Games วัดการปรับปรุงของแต่ละสถานการณ์การเพิ่มประสิทธิภาพได้ ดังนี้

  • การเปลี่ยนกลยุทธ์การจัดตารางเวลาของแกน CPU และการปรับลำดับความสำคัญของแต่ละเธรดเพื่อลดภาระงานของแกนหลัก
  • การคอมไพล์ PSO (ออบเจ็กต์สถานะไปป์ไลน์) ล่วงหน้าเพื่อลดภาระงานการคอมไพล์ Shader แบบรันไทม์ของ CPU
  • การใช้การคัด PVS (ชุดที่อาจมองเห็นได้) เพื่อลดปริมาณงานการแสดงผลของ GPU
  • การฝังการกรองเงาที่บดบังแบบออฟไลน์เพื่อลดภาระงานการแสดงผลของ GPU

Kuro Games ดึงข้อมูล ODPM ในเทสเคสโดยใช้ฉาก 3 มิติและมุมมองกล้องเดียวกันที่มีระยะเวลาเท่ากัน เพื่อเปรียบเทียบผลลัพธ์การทดสอบภายใต้เงื่อนไขที่เหมือนกันและทําซ้ำได้

ผลลัพธ์

Kuro Games ใช้ข้อมูลจาก ODPM และการเก็บโปรไฟล์พลังงานเพื่อลดการใช้พลังงานทั้งหมดลง 9.68% จาก 3233mW ในรุ่นเดือนกันยายน (เวอร์ชัน 0904) เป็น 2920mW ในรุ่นเดือนพฤศจิกายน (เวอร์ชัน 1.4 เวอร์ชันสุดท้าย) รูปภาพต่อไปนี้แสดงรายละเอียดการลดพลังงานนี้ภายใต้การตั้งค่า FPS และกราฟิกที่สม่ำเสมอ

รูปที่ 3 ความแตกต่างของข้อมูลรางกำลังระหว่างเวอร์ชันเดือนกันยายนกับเวอร์ชันเดือนพฤศจิกายน

ปัจจุบันข้อมูล ODPM พร้อมใช้งานสำหรับอุปกรณ์ Pixel 6 ขึ้นไปเท่านั้น แต่คุณจะเห็นว่ามีการปรับปรุงในอุปกรณ์ Android ทุกรุ่นผ่านเมตริกอื่นๆ ซึ่งรวมถึงการใช้งาน CPU, การใช้งาน GPU และ Batterystats ตัวอย่างเช่น Kuro Games ยังพบว่ามีการใช้ GPU ลดลง 9.6% โดยรวมในฉากเดียวกันสำหรับ Oppo Reno 5

เริ่มต้นใช้งาน

คุณอาจเริ่มจากข้อมูล Power Profiler หรือ Perfetto Power Rails สำหรับกรณีการใช้งานขั้นสูง

ชื่อรางไฟ ODPM จะเป็นชื่อเฉพาะของอุปกรณ์ ชื่อรางอาจเป็น "S2S_VDD_G3D" คุณต้องมีความรู้เฉพาะเกี่ยวกับฮาร์ดแวร์ของอุปกรณ์เพื่อตีความข้อมูลการตรวจสอบพลังงานที่เกี่ยวข้อง ตั้งแต่ API ระดับ 35 ของ Android เป็นต้นไป คุณจะใช้ PowerMonitor จาก getSupportedPowerMonitors ได้ เมื่อใช้ PowerMonitor คุณจะดึงข้อมูลการแมประหว่างป้ายกำกับที่มนุษย์อ่านได้กับชื่อรางจ่ายไฟดิบที่กำหนดโดย OEM แต่ละรายได้

หากต้องการยืนยันการปรับปรุงในอุปกรณ์ที่ไม่มี ODPM คุณสามารถใช้การประมาณความถี่ของ CPU, ความถี่ของ GPU และแบนด์วิดท์ของหน่วยความจําเป็นพร็อกซีสําหรับการสิ้นเปลืองพลังงาน

แหล่งข้อมูลเพิ่มเติม

เพิ่มประสิทธิภาพการใช้พลังงาน