ניהול העוצמה והביצועים של מכשירי אנדרואיד יכול לעזור להבטיח שאפליקציות פועלות באופן עקבי וחלק על מגוון רחב של חומרה. ב-Android 7.0 ואילך, יצרני OEM יכולים ליישם תמיכה ברמזים לביצועים מתמשכים המאפשרים לאפליקציות לשמור על ביצועי מכשיר עקביים ולציין ליבה בלעדית כדי לשפר את הביצועים עבור אפליקציות קדומות עתירות מעבד.
ביצועים מתמשכים
עבור אפליקציות ארוכות טווח (משחקים, מצלמה, RenderScript , עיבוד אודיו), הביצועים עשויים להשתנות באופן דרמטי ככל שמגיעים למגבלות טמפרטורת המכשיר ומנועי מערכת על שבב (SoC) מצטמצמים. מפתחי אפליקציות היוצרים אפליקציות בעלות ביצועים גבוהים וארוכי טווח מוגבלות מכיוון שהיכולות של הפלטפורמה הבסיסית הן מטרה נעה כאשר המכשיר מתחיל להתחמם.
כדי לטפל במגבלות אלו, אנדרואיד 7.0 הציגה תמיכה בביצועים מתמשכים, המאפשרת ליצרני OEM לספק רמזים לגבי יכולות ביצועי המכשיר עבור אפליקציות ארוכות טווח. מפתחי אפליקציות יכולים להשתמש ברמזים אלה כדי לכוונן אפליקציות לרמה צפויה ועקבית של ביצועי המכשיר לאורך תקופות זמן ארוכות.
ארכיטקטורה
אפליקציית אנדרואיד יכולה לבקש מהפלטפורמה להיכנס למצב ביצועים מתמשכים שבו מכשיר האנדרואיד יכול לשמור על רמת ביצועים עקבית לפרקי זמן ממושכים.
יישום
כדי לתמוך בביצועים מתמשכים באנדרואיד 7.0 ואילך, יצרני OEM חייבים:
- בצע שינויים ספציפיים למכשיר ב-HAL הכוח כדי לנעול את תדרי המעבד/GPU המקסימליים או לבצע אופטימיזציות אחרות כדי למנוע מצערת תרמית.
- יישם את הרמז החדש
POWER_HINT_SUSTAINED_PERFORMANCE
בכוח HAL. - הצהר על תמיכה על ידי החזרת TRUE דרך ה-API של
isSustainedPerformanceModeSupported()
. - יישום
Window.setSustainedPerformanceMode
.
ביישום ההתייחסות של Nexus, רמז הכוח מגביל את התדרים המקסימליים של ה-CPU וה-GPU ברמות הקיימות הגבוהות ביותר. זכור שהורדת סרגל ה-MAX בתדר CPU/GPU תוריד את קצב הפריימים, אך קצב נמוך יותר זה מועדף במצב זה בשל קיימותו. לדוגמה, מכשיר המשתמש בשעונים מקסימליים רגילים עשוי להיות מסוגל לרנדר ב-60 FPS למשך מספר דקות, אך לאחר שהמכשיר מתחמם, הוא עשוי להגיע ל-30 FPS בתום 30 דקות. בעת שימוש במצב מתמשך, המכשיר יכול, למשל, לבצע רינדור עקבי ב-45 FPS במשך כל 30 הדקות. המטרה היא קצב פריימים בעת שימוש במצב שהוא גבוה (או גבוה יותר) מקצב הפריימים כאשר לא משתמשים במצב, ועקבי לאורך זמן כך שמפתחים לא יצטרכו לרדוף אחרי מטרה נעה.
אנו ממליצים בחום ליישם מצב מתמשך כך שהמכשיר ישיג את הביצועים המתמשכים הגבוהים ביותר האפשריים - לא רק את הערכים המינימליים הנדרשים כדי לעבור את הבדיקה (למשל, בחר את מכסי התדר הגבוהים ביותר האפשריים של MAX שלא גורמים למכשיר למצערת תרמית לאורך זמן).
הערה : לא נדרשת מכסה של קצבי שעון MAX כדי ליישם מצב מתמשך.
מַתַן תוֹקֵף
יצרני ציוד מקורי יכולים להשתמש במבחן CTS (אנדרואיד 7.0 ואילך) כדי לאמת את היישום שלהם של API לביצועים מתמשכים. הבדיקה מפעילה עומס עבודה למשך כ-30 דקות ומעמידה את הביצועים עם ובלי מצב מתמשך מופעל:
- כאשר מצב מתמשך מופעל, קצב הפריימים חייב להישאר קבוע יחסית (הבדיקה מודדת את אחוז השינוי בקצב הפריימים לאורך זמן ודורשת שינוי של <5%).
- כאשר מצב מתמשך מופעל, קצב הפריימים לא יהיה נמוך מקצב הפריימים בתום 30 דקות כשהמצב מושבת.
בנוסף, אתה יכול לבדוק באופן ידני את היישום שלך עם מספר עומסי עבודה עתירי מעבד ו-GPU כדי להבטיח שהמכשיר לא יגמר תרמית לאחר 30 דקות של שימוש. בבדיקות פנימיות, השתמשנו בעומסי עבודה לדוגמה, כולל משחקים ואפליקציות בנצ'מרק (למשל gfxbench ).
ליבות בלעדיות
עבור עומסי עבודה עתירי CPU ורגישים לזמן, הקדמה על ידי שרשור אחר יכול להיות ההבדל בין ביצוע מועדי מסגרת או לא. עבור אפליקציות שיש להן דרישות חביון וקצב פריימים קפדניות (כגון אפליקציות שמע או מציאות מדומה), ליבת מעבד בלעדית יכולה להבטיח רמת ביצועים מקובלת.
מכשירים המריצים אנדרואיד 7.0 ואילך יכולים כעת לשמור ליבה אחת במפורש לאפליקציית החזית העליונה, לשפר את הביצועים עבור כל אפליקציות החזית ולהעניק לאפליקציות עם עומסי עבודה בעוצמה גבוהה יותר שליטה על האופן שבו העבודה שלהם מוקצית על פני ליבות המעבד.
כדי לתמוך בליבה בלעדית במכשיר:
- הפעל
cpusets
והגדרcpuset
שמכיל רק את אפליקציית החזית העליונה. - ודא שליבה אחת (זוהי הליבה הבלעדית) שמורה לשרשורים מ-
cpuset
זה. - יישם את ה-API של getExclusiveCores כדי להחזיר את מספר הליבה של הליבה הבלעדית.
כדי לקבוע אילו תהליכים מתוזמנים באילו ליבות, השתמש ב- systrace
בזמן הפעלת עומס עבודה כלשהו וודא שאין שרשורי מרחב משתמש מאפליקציות מלבד אפליקציית החזית העליונה מתוזמנים בליבה הבלעדית.
כדי להציג יישום עזר עבור Nexus 6P, עיין ב- android//device/huawei/angler/power/power.c
.