חשוב מאוד להעריך את זמני העיבוד של הפריימים ב-CPU וב-GPU (זמני פריימים) כדי להבין את ביצועי האפליקציה ולזהות צווארי בקבוק. כשאתם יוצרים פרופיל של אפליקציה באמצעות AGI, מערכת System Profiler מספקת נתוני מעקב שאפשר להשתמש בהם כדי להעריך את זמני הפריימים.
זמני CPU
ב-AGI, אפשר לראות את זמני הפריימים הכוללים והפעילים של המעבד בטראק המעבד של פרופיל המערכת.
זמן כולל של CPU (יחידת עיבוד מרכזית)
כדי למדוד את משך הזמן הכולל של המעבד, בוחרים את טווח הזמן שכולל את הזמן שחלף בין אירועי שליחת המסגרות הרצופים. אירועי שליחת המסגרות הם eglSwapBuffers
(ל-OpenGL) ו-vkQueuePresentKHR
(ל-Vulkan).

eglSwapBuffer
.
vkQueuePresentKHR
.המדידה הזו היא אומדן של זמן המעבד הכולל,אבל היא לא מייצגת בהכרח את זמן המעבד הפעיל. לדוגמה, באפליקציות שמבוססות על GPU, מעבד ה-CPU עשוי להמתין עד שה-GPU ישלים את העבודה שלו לפני שליחת פריים חדש. המצב הזה קורה לעיתים קרובות כשאירוע dequeueBuffer
, eglSwapBuffer
(ב-OpenGL) או vkQueuePresent
(ב-Vulkan) תופס חלק גדול מזמני המעבד.
זמן ההמתנה נכלל בזמן ה-CPU הכולל, אבל לא בזמן ה-CPU הפעיל.

dequeueBuffer
ו-eglSwapBuffer
.
זמן CPU פעיל
זמן המעבד הפעיל קובע מתי המעבד מפעיל את קוד האפליקציה בלי להיות במצב מנוחה.
כדי למדוד את זמן המעבד הפעיל, בודקים את הפרוסות Running שמעל לאירועי המעבד. ספירה של כל החלקים במעקב בין שני אירועי שליחת הפריים שנמצאים בסטטוס Running. חשוב לכלול את כל השרשורים הפעילים.


דרך נוספת למדוד את זמן המעבד הפעיל היא להציג את פלחי האפליקציה בטראקים של המעבד. הפרוסות האלה מציינות מתי המעבד פועל, והן תואמות לפרוסות Running.

כדי לזהות פלחים של אפליקציות, אפשר להוסיף לאפליקציה סמנים של ATrace. הסימנים יוצגו בטראק של המעבד ב-System Profiler.

אומדן זמני הפריימים ב-GPU
כדי להעריך את זמני הפריימים של ה-GPU, אפשר להשתמש בפלחים של GPU או בספירת GPU ב-System Profiler. ההערכה מדויקת יותר כשמשתמשים בפלחים של GPU.
פרוסות של GPU
אם יש ב-System Profiler מידע על פלחים של GPU, תוכלו לקבל מידע מדויק מאוד על זמן הרינדור של פריים ב-GPU על ידי מדידת משך הזמן הכולל שהאפליקציה משקיעה בביצוע משימות שמשויכות לפריים יחיד.
מכשירים במאלי
במכשירי Mali, לפלחים של GPU יש טראקים מסוג fragment, non-fragment ולפעמים גם supplementary non-fragment. בפריימים פחות מורכבים, העבודה של הפיצ'ר והעבודה שלא קשורה אליו מתבצעת ברצף, כך שאפשר להבדיל בין עבודה של פריים אחד לעבודה של פריים אחר על ידי חיפוש פערים בין עבודות GPU פעילות.
לחלופין, אם אתם מכירים את העבודה שנשלחת ל-GPU, זיהוי התבנית של שלבי הרינדור שנשלחים מספק מידע על הזמן שבו פריים מתחיל ומסתיים.


באפליקציות עם תהליך עבודה מקביל יותר של GPU, אפשר לקבל את זמני הפריימים של ה-GPU על ידי חיפוש כל הפריימים שיש להם את אותו submissionID בחלונית Selection לכל פרוסה.
באפליקציות שמבוססות על Vulkan, אפשר להשתמש בכמה שליחות כדי ליצור פריים. כדי לעקוב אחרי מזהי השליחה, משתמשים בטראק Vulkan Events, שמכיל פלחים לכל שליחה. בחירת פרוסה של שליחה תדגיש את כל הפרוסות של פעילות ה-GPU שתואמות לשליחה.


מכשירי Adreno
במכשירי Adreno, פלחים של GPU מופיעים בטראק GPU Queue 0 ותמיד מיוצגים ברצף, כך שאפשר לבדוק את כל הפלחים שמייצגים את שלבי הרינדור של פריים ולהשתמש בהם כדי למדוד את זמני הפריימים של GPU.


בדומה לתרחיש של Mali שמתואר למעלה: אם האפליקציה משתמשת ב-Vulkan, המסלול Vulkan Events מספק מידע על העבודה שנשלחת לביצוע המסגרת. כדי להדגיש את שלבי העיבוד, לוחצים על הפרוסות של Vulkan Events שמשויכות לפריים.

יש תרחישים מסוימים שבהם קשה יותר להבחין בין גבולות הפריימים של ה-GPU כי האפליקציה קשורה מאוד ל-GPU. בתרחישים האלה, אם אתם מכירים את העבודה שנשלחת ל-GPU, תוכלו לזהות את התבנית שבה מתבצעות שלבי ה-render ולהחליט על גבולות המסגרת על סמך המידע הזה.

ספירת אירועים ב-GPU
אם פרטי הפרוסה של ה-GPU לא זמינים ב-trace, אפשר להעריך את זמן הפריימים של ה-GPU באמצעות הטראקים של מספר האירועים ב-GPU.
מכשירים במאלי
במכשירי Mali, אפשר להשתמש בנתיב GPU utilization כדי להעריך את זמן הפריימים של ה-GPU באפליקציה שלא צורכת הרבה משאבי GPU. כשאפליקציות פחות צורכות משאבי GPU, הן כוללות תקופות קבועות של פעילות GPU גבוהה ונמוכה, במקום פעילות גבוהה באופן עקבי. כדי להעריך את זמני הפריימים של ה-GPU באמצעות הטראק ניצול GPU, מודדים את משך תקופות הפעילות הגבוהה בטראק.

אם האפליקציה דורשת יותר שימוש ב-GPU, ניצול ה-GPU יכול להיות גבוה מאוד באופן עקבי. במקרה כזה, אפשר להשתמש במעקבים fragment queue utilization ו-non-fragment queue utilization כדי לעקוב אחרי הפעילות של ה-GPU ולהעריך את זמני הפריימים של ה-GPU. חיפוש דפוסים בטראקים של קטעים ושל טראקים ללא קטעים מאפשר לקבל הערכה גסה לגבי המיקום של גבולות הפריים, ולהשתמש בה כדי למדוד את זמן הפריים ב-GPU.

מכשירי Adreno
במכשירי Adreno, אם האפליקציה לא דורשת שימוש אינטנסיבי ב-GPU, אפשר להעריך את זמני הפריימים של ה-GPU באותו אופן שבו אפשר לעשות זאת במכשירי Mali בקטע הקודם.

אם האפליקציה צורכת יותר משאבים מה-GPU, ויש לה אחוז ניצול גבוה באופן עקבי של ה-GPU, אפשר להשתמש במעקבים Vertex Instructions / Second ו-Fragment Instructions / Second כדי להעריך את זמני הפריימים של ה-GPU. חיפוש דפוסים ברמות הפעילות של הטראקים האלה מאפשר לקבל הערכה גסה לגבי המיקום של גבולות הפריים, ולהשתמש בה כדי למדוד את זמן הפריים ב-GPU.

יכול להיות שנתונים דומים יהיו זמינים בקטעים האלה:
- Vertices Shaded / Second
- קטעים מוצללים לשנייה
- % Time Shading Vertices
- % Time Shading Fragments