במדריך הזה מוסבר איך לנווט בדוח Systrace ואיך לפרש אותו. כדי להבין את דוח Perfetto, אפשר לעיין במסמכי התיעוד של Trace Processor.
אלמנטים בדוח טיפוסי
Systrace יוצר קובץ HTML של פלט שמכיל סדרה של קטעים. בדוח מפורטים השרשורים של כל תהליך. אם שרשור מסוים מעבד פריימים של ממשק משתמש, הדוח מציין גם את הפריימים המעובדים לאורך ציר הזמן. הזמן עובר בכיוון קדימה כשעוברים משמאל לימין בדוח.
מלמעלה למטה, הדוח מכיל את הקטעים הבאים.
אינטראקציות של משתמשים
החלק הראשון מכיל עמודות שמייצגות אינטראקציות ספציפיות של משתמשים באפליקציה או במשחק, כמו הקשה על המסך של המכשיר. האינטראקציות האלה משמשות כסמני זמן שימושיים.
פעילות המעבד
בקטע הבא מוצגים עמודות שמייצגות את הפעילות של השרשור בכל CPU. העמודות מציגות את פעילות המעבד בכל האפליקציות, כולל האפליקציה או המשחק שלכם.
אפשר להרחיב את הקטע 'פעילות המעבד' כדי לראות את תדירות השעון של כל מעבד. איור 1 מציג דוגמה לקטע פעילות CPU מכווץ, ואיור 2 מציג גרסה מורחבת שבה מוצגת תדירות השעון:
אירועי מערכת
ההיסטוגרמות בקטע הזה מציגות אירועים ספציפיים ברמת המערכת, כמו מספרים של טקסטורות והגודל הכולל של אובייקטים ספציפיים.
היסטוגרמה שכדאי לבדוק מקרוב היא זו שמסומנת בתווית SurfaceView. הערך של count מייצג את מספר מאגרי המסגרות המורכבים שהועברו לצנרת התצוגה וממתינים להצגה במסך המכשיר. מכיוון שלרוב המכשירים יש מאגר כפול או משולש, המספר הזה הוא כמעט תמיד 0, 1 או 2.
היסטוגרמות אחרות שמתארות את התהליך של Surface Flinger, כולל אירועי VSync ועבודה של החלפת שרשור ממשק המשתמש, מופיעות באיור 3:
הצגת מסגרות
בקטע הזה, שהוא לרוב הגבוה ביותר בדוח, מוצג קו רב-צבעוני ואחריו עמודות מוערמות. הצורות האלה מייצגות את הסטטוס ואת מחסנית המסגרות של שרשור מסוים שנוצר. כל רמה במערך מייצגת קריאה ל-beginSection()
או את ההתחלה של אירוע מעקב בהתאמה אישית שהגדרתם לאפליקציה או למשחק.
הקו הרב-צבעוני שמעל כל עמודה מוערמת מייצג את קבוצת הסטטוסים של שרשור מסוים לאורך זמן. כל מקטע בקו יכול להכיל אחד מהצבעים הבאים:
- ירוק: פועל
- השרשור משלים עבודה שקשורה לתהליך או מגיב להפרעה.
- כחול: ניתן להרצה
- השרשור זמין להפעלה אבל לא מתוזמן כרגע.
- לבן: שינה
- לשרשור אין עבודה לבצע, אולי כי השרשור חסום בנעילת mutex.
- כתום: שינה ללא הפרעות
- ה-thread חסום בגלל קלט/פלט או בהמתנה לסיום פעולת דיסק.
- סגול: שינה שאפשר להפריע לה
- ה-thread חסום בפעולת ליבה אחרת, בדרך כלל ניהול זיכרון.
מקשי קיצור
בטבלה הבאה מפורטים מקשי הקיצור שזמינים כשצופים בדוח Systrace:
מפתח | תיאור | |
---|---|---|
מע' | מגדילים את התצוגה של ציר הזמן של העקבות. | |
A | מזיזים את ציר הזמן של העקבות שמאלה. | |
דר' | מצמצמים את התצוגה של ציר הזמן של העקבות. | |
D | מזיזים את ציר הזמן של העקבות ימינה. | |
מז' | מרכוז ציר הזמן של העקבות במיקום הנוכחי של העכבר. | |
M | הוספת מסגרת לבחירה הנוכחית. | |
1 | משנים את מודל הבחירה שמופעל כרגע למצב 'בחירה'. מתאים ללחצן הראשון שמופיע בסרגל הכלים של בורר העכבר (ראו תמונה משמאל). |
|
2 | שינוי מודל הבחירה שמופעל כרגע למצב 'הזזה'. מתאים ללחצן השני שמופיע בסרגל הכלים של בורר העכבר (ראו תמונה משמאל). |
|
3 | משנים את מודל הבחירה שמופעל כרגע למצב 'מרחק מתצוגה'. מתאים ללחצן השלישי שמופיע בסרגל הכלים של בורר העכבר (ראו תמונה משמאל). |
|
4 | משנים את מודל הבחירה שמופעל כרגע למצב 'תזמון'. מתאים ללחצן הרביעי שמופיע בסרגל הכלים של בורר העכבר (ראו תמונה משמאל). |
|
G | הצגת משבצות הבחירה בתחילת המשימה שנבחרה כרגע. | |
Shift + G | הצגת הרשת בסוף המשימה שנבחרה כרגע. | |
חץ שמאלה | בוחרים את האירוע הקודם בציר הזמן שנבחר. | |
חץ ימינה | בוחרים את האירוע הבא בציר הזמן שנבחר כרגע. |
חקירת בעיות בביצועים
כשמבצעים אינטראקציה עם דוח Systrace, אפשר לבדוק את השימוש ב-CPU של המכשיר במהלך ההקלטה. לקבלת עזרה בניווט בדוח ה-HTML, אפשר לעיין בקטע מקשי קיצור או ללחוץ על ? בפינה השמאלית העליונה של הדוח.
בקטעים הבאים מוסבר איך לבדוק את המידע בדוח כדי למצוא ולתקן בעיות בביצועים.
זיהוי בעיות שקשורות לביצועים
כשמנווטים בדוח Systrace, אפשר לזהות בעיות בביצועים בקלות רבה יותר באמצעות אחת או יותר מהפעולות הבאות:
- בוחרים פרק זמן שמעניין אתכם על ידי ציור מלבן סביב פרק הזמן.
- אפשר לסמן או להדגיש אזור בעייתי באמצעות כלי הסרגל.
- כדי להציג כל פעולת רענון של התצוגה, לוחצים על אפשרויות תצוגה > הדגשה > VSync.
בדיקת מסגרות והתראות בממשק המשתמש
כפי שמוצג באיור 4, בדוח Systrace מפורט כל תהליך שמעבד מסגרות של ממשק משתמש, וכל מסגרת מעובדת מצוינת לאורך ציר הזמן. פריימים שעוברים רינדור בתוך 16.6 אלפיות השנייה הנדרשות לשמירה על 60 פריימים יציבים לשנייה מסומנים בעיגולים ירוקים. פריימים שזמן הרינדור שלהם ארוך מ-16.6 אלפיות השנייה מסומנים בעיגולים צהובים או אדומים.

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

אחרי שבוחרים פריים איטי, יכול להיות שתוצג התראה בחלונית התחתונה של הדוח. בהתראה שמוצגת באיור 5 מצוין שהבעיה העיקרית בפריים היא שמוקדש יותר מדי זמן למחזור ולקישור מחדש של ListView
. יש קישורים לאירועים הרלוונטיים בנתוני המעקב, שכוללים הסברים נוספים על הפעולות שהמערכת מבצעת בזמן הזה.
כדי לראות כל התראה שהכלי זיהה בנתוני המעקב, וגם את מספר הפעמים שהמכשיר הפעיל כל התראה, לוחצים על הכרטיסייה Alerts (התראות) בצד שמאל של החלון, כמו שמוצג באיור 6. בחלונית התראות אפשר לראות אילו בעיות מתרחשות ב-trace ובאיזו תדירות הן תורמות לבעיות בביצועים. אפשר לחשוב על החלונית הזו כרשימה של באגים שצריך לתקן. לעתים קרובות, שינוי קטן או שיפור בתחום אחד יכולים להסיר קבוצה שלמה של התראות.

אם אתם רואים שהמון עבודה מתבצעת בשרשור ממשק המשתמש, אתם יכולים להשתמש באחת מהגישות הבאות כדי לקבוע אילו שיטות צורכות יותר מדי זמן מעבד:
- אם יש לכם רעיון לגבי השיטות שעלולות לגרום לצווארי בקבוק, תוכלו להוסיף סמני מעקב לשיטות האלה. מידע נוסף זמין במדריך בנושא הגדרת אירועים מותאמים אישית בקוד.
- אם אתם לא בטוחים מהו המקור של צווארי הבקבוק בממשק המשתמש, תוכלו להשתמש בכלי ליצירת פרופיל של CPU שזמין ב-Android Studio. אפשר ליצור יומני מעקב, ואז לייבא אותם ולבדוק אותם באמצעות הכלי CPU Profiler.