יצרני המכשירים חייבים לספק פרופיל צריכת אנרגיה של רכיבים בקובץ /frameworks/base/core/res/res/xml/power_profile.xml
.
כדי לקבוע ערכים לפרופילי צריכת החשמל, צריך להשתמש בחומרה שממדדת את צריכת החשמל של המכשיר ומבצעת את הפעולות השונות שעבורן נדרש המידע. מודדים את צריכת החשמל במהלך הפעולות האלה ומחשבים את הערכים (מפיקים את ההבדלים מנתוני צריכת חשמל אחרים של קבוצת בסיס, לפי הצורך).
המטרה של פרופיל צריכת החשמל היא להעריך את שחיקה הסוללה בצורה הולמת, ולכן הערכים של פרופיל צריכת החשמל מוצגים במונחי זרם (אמפר). מסגרת Android מכפילה את המתח בזמן שבו מערכת המשנה הייתה פעילה ומחשבת את הערך ב-mAh, שמשמשים להערכת כמות האנרגיה שנצרכה על ידי האפליקציה או מערכת המשנה.
מכשירים עם בקרי Bluetooth, מודם ו-Wi-Fi עם Android מגרסה 7.0 ואילך יכולים לספק ערכי צריכת חשמל נוספים שמתקבלים מנתוני צ'יפסט.
מכשירים עם מעבדים הטרוגניים
פרופיל צריכת האנרגיה של מכשירים עם ליבות CPU בארכיטקטורה הטרוגנית חייב לכלול את השדות הנוספים הבאים:
- מספר המעבדים הכולל בכל אשכול (בפורמט cpu.clusters.cores).
- מהירויות המעבדים הנתמכות בכל אשכול.
- צריכת האנרגיה הפעילה של המעבד בכל אשכולות.
כדי להבדיל בין צריכת החשמל הפעילה של המעבד לבין מהירויות המעבד הנתמכות באשכולות, צריך לצרף את מספר האשכול לשם המערך. מספרי האשכולות מוקציים לפי סדר הליבות של המעבד בעץ המכשיר של הליבה. לדוגמה, בארכיטקטורה הטרוגנית עם שני (2) אשכולות עם ארבעה (4) ליבות:
- cluster0 מורכב מ-cpu0 עד cpu3
- cluster1 מורכב מ-cpu4-7
מסגרת Android משתמשת במספרי הליבות האלה של המעבד כשהיא קוראת נתונים סטטיסטיים מהקבצים sysfs
שבספרייה:
/sys/devices/system/cpu/cpu<number>/cpufreq/stats
.
דוגמה למהירויות ולמעבדים של אשכולות:
<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 על סמך עוצמת האות. זוהי רשומה עם כמה ערכים, אחד לכל עוצמת אות, מהחלשה ביותר לחזקה ביותר. | 30 mA, 10 mA | - |
gps.on | צריכת אנרגיה נוספת כש-GPS מקבל אות. | 50 mA | - |
radio.active | צריכת אנרגיה נוספת כשהמכשיר משדר או מקבל נתונים ברדיו הסלולרי. | 100 mA-300 mA | - |
radio.scanning | צריכת אנרגיה נוספת כשהמכשיר משדר קריאה למגדל. | 1.2 mA | - |
radio.on | צריכת אנרגיה נוספת כשהרדיו הסלולרי פועל. זוהי רשומה עם כמה ערכים, אחד לכל עוצמת אות (ללא אות, חלשה, בינונית, חזקה). | 1.2 mA | חלק מהמכשירים מגדילים את עוצמת האות כשהם מחפשים תורן סלולרי ולא מזהים אות. הערכים יכולים להיות זהים או לרדת ככל שעוצמת האות עולה. אם תספקו רק ערך אחד, המערכת תשתמש באותו ערך לכל נקודות החוזק. אם מציינים שני ערכים, המערכת משתמשת בערך הראשון כשאין אות, בערך השני כשהאות חזק וכן הלאה. |
bluetooth.controller.idle | צריכת הזרם הממוצעת (mA) של בקר ה-Bluetooth במצב חוסר פעילות. | - | הערכים האלה לא מוערכים, אלא נלקחים מגיליון הנתונים של הבקר. אם יש כמה מצבי קליטה או שידור, המערכת מחשבת את הממוצע של המצבים האלה. בנוסף, המערכת אוספת עכשיו נתונים לגבי סריקות Bluetooth ו-Low Energy (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. | - | |
modem.controller.sleep | צריכת הזרם הממוצעת (mA) של בקר המודם במצב שינה. | 0 mA | הערכים האלה לא מוערכים, אלא נלקחים מגיליון הנתונים של הבקר. אם יש כמה מצבי קבלה, המערכת מחשבת את הממוצע של המצבים האלה. אם יש כמה מצבי שידור, אפשר לציין ערך לכל מצב שידור החל מ-Android 9. |
modem.controller.idle | צריכת הזרם הממוצעת (mA) של בקר המודם במצב חוסר פעילות. | - | |
modem.controller.rx | צריכת הזרם הממוצעת (mA) של בקר המודם במצב קבלה. | - | |
modem.controller.tx | צריכת הזרם הממוצעת (mA) של בקר המודם במהלך שידור ברמות שונות של הספק RF. זוהי רשומה עם כמה ערכים, עם ערך אחד לכל רמת עוצמת שידור. | 100 mA, 200 mA, 300 mA, 400 mA, 500 mA | |
modem.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 | זוהי רשומה עם מספר ערכים שמפרטת את כל מהירויות המעבד האפשריות ב-KHz. | 125,000 קילו-הרץ, 250,000 קילו-הרץ, 500,000 קילו-הרץ, 1,000,000 קילו-הרץ, 1,500,000 קילו-הרץ | מספר הרשומות והסדר שלהן חייבים להתאים לרשומות mA ב-cpu.active. |
cpu.idle | צריכת החשמל הכוללת של המערכת כשמעבדי ה-CPU (וה-SoC) נמצאים במצב השהיה של המערכת. | 3 mA | - |
cpu.awake | צריכת חשמל נוספת כשמעבדי ה-CPU נמצאים במצב זמן השהיה לצורכי תזמון (לולאת זמן השהיה של הליבה). המערכת לא נמצאת במצב השהיה. | 50 mA | יכול להיות שבפלטפורמה שלכם יש יותר ממצב אחד של חוסר פעילות עם רמות שונות של צריכת חשמל. עליכם לבחור מצב מנוחה מייצג לתקופות ארוכות יותר של חוסר פעילות של מתזמן (כמה אלפיות שנייה). בודקים את תרשים צריכת החשמל בציוד המדידה ובוחרים דגימות שבהן צריכת החשמל של המעבד היא הנמוכה ביותר, ומבטלים דגימות עם צריכת חשמל גבוהה יותר שבהן המעבד יצא ממצב המתנה. |
cpu.active | צריכת החשמל הנוספת של מעבדים כשהם פועלים במהירויות שונות. | 100 mA, 120 mA, 140 mA, 160 mA, 200 mA | הערך מייצג את הכוח שבו משתמשים המסילות של המעבד כשהן פועלות במהירויות שונות. מגדירים את המהירות המקסימלית בליבה לכל אחת מהמהירויות המותרות, ומקבעים את המעבד במהירות הזו. המספר והסדר של הרשומות תואמים למספר ולסדר של הרשומות ב-cpu.speeds. |
cpu.clusters.cores | מספר הליבות בכל אשכול מעבדים. | 4, 2 | נדרשת רק במכשירים עם ארכיטקטורות מעבדים הטרוגניות. מספר הרשומות והסדר צריכים להתאים למספר הרשומות באשכול של cpu.active ו-cpu.speeds. הערך הראשון מייצג את מספר ליבות ה-CPU באשכול cluster0, הערך השני מייצג את מספר ליבות ה-CPU באשכול cluster1 וכן הלאה. |
battery.capacity | קיבולת הסוללה הכוללת במיליאמפר לשעה. | 3,000 mAh | - |
סריקות Bluetooth ו-Low Energy (LE)
במכשירים עם Android 7.0, המערכת אוספת נתונים על סריקות של צריכת אנרגיה נמוכה (LE) ועל תעבורת נתונים ברשת Bluetooth (כמו RFCOMM ו-L2CAP), ומשייכת את הפעילויות האלה לאפליקציה שהפעילה את הסריקה. סריקות Bluetooth משויכות לאפליקציה שהפעילה את הסריקה, אבל סריקות באצווה לא משויכות לאפליקציה הזו (ומשויכות במקום זאת לאפליקציית Bluetooth). אם אפליקציה מבצעת סריקה במשך N אלפיות שנייה, עלות הסריקה היא N אלפיות שנייה של זמן קבלה ו-N אלפיות שנייה של זמן שליחה. כל הזמן שנותר לבקר מוקצה לתנועת הרשת או לאפליקציית ה-Bluetooth.