Perfetto

perfetto הוא כלי שמאפשר לאסוף מידע על הביצועים ממכשירי Android באמצעות ממשק הגישור של Android‏ (ADB). מפעילים את הכלי perfetto באמצעות הפקודה adb shell perfetto .... ‫perfetto משתמש במקורות שונים כדי לאסוף עקבות ביצועים מהמכשיר שלכם, למשל:

  • ftrace למידע מהליבה
  • atrace להערות במרחב המשתמש בשירותים ובאפליקציות
  • heapprofd למידע על השימוש בזיכרון המקומי של שירותים ואפליקציות

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

תחביר

בקטע הזה מוסבר איך להשתמש ב-ADB כדי לקרוא ל-perfetto למצבים שונים וליצור מעקב.

בחירת מקור נתונים

perfetto כולל את שני המצבים הבאים שקובעים את מקורות הנתונים שבהם הוא משתמש כדי לתעד את העקבות:

  • מצב בהיר: אפשר לבחור רק קבוצת משנה של מקורות נתונים, באופן ספציפי atrace ו-ftrace. עם זאת, הממשק של המצב הזה דומה לזה של systrace.
  • מצב רגיל: ההגדרה שלו מתבצעת ב-מאגר אחסון לפרוטוקולים, והוא מאפשר לכם להשתמש ביותר מהפונקציונליות של perfetto באמצעות מקורות נתונים שונים מ-atrace ומ-ftrace.

אפשרויות כלליות

בטבלה הבאה מפורטות האפשרויות הזמינות כשמשתמשים ב-perfetto בכל אחד מהמצבים:

טבלה 1. רשימה של אפשרויות כלליות זמינות בכלי Perfetto.

אפשרות תיאור
--background |
-d
perfetto יוצא מיד מממשק שורת הפקודה וממשיך להקליט את הנתונים שלכם ברקע.
--background-wait | -D כמו --background, אבל ממתין (עד 30 שניות) שכל מקורות הנתונים יתחילו לפני היציאה. קוד היציאה הוא אפס אם מתקבל אישור מוצלח, ואחרת הוא לא אפס (שגיאה או פסק זמן).
--alert-id המזהה של ההתראה שהפעילה את המעקב הזה.
--config-id המזהה של הגדרת ההפעלה.
--config-uid ‫UID של האפליקציה שרשמה את ההגדרה.
--subscription-id מזהה המינוי שהפעיל את המעקב הזה.
--out OUT_FILE |
-o OUT_FILE

מציינים את הנתיב הרצוי לקובץ המעקב של הפלט או - בשביל stdout. ‫perfetto כותב את הפלט לקובץ שמתואר בדגלים הקודמים. פורמט הפלט תואם לפורמט שמוגדר ב-AOSP trace.proto.

הערה: צריך לציין את שם הנתיב המלא של קובץ הפלט. בדרך כלל, צריך לכתוב את הקבצים בתיקייה /data/misc/perfetto-traces.

--upload בסיום, הפונקציה מעבירה את נתוני המעקב לחבילה שצוינה בהודעה IncidentReportConfig בהגדרות המעקב של פרוטוקול proto.
--no-guardrails ההגדרה הזו משביתה את ההגנות מפני שימוש מוגזם במשאבים כשמפעילים את הדגל --upload במהלך הבדיקה.
--reset-guardrails איפוס המצב הקבוע של אמצעי הבקרה והיציאה לבדיקה.
--rsave-for-bugreport אם מתבצע מעקב עם bugreport_score > 0, המעקב נשמר בקובץ. הנתיב יוצג כשהפעולה תסתיים.
--query הפקודה שולחת שאילתה לגבי מצב השירות ומדפיסה אותו כטקסט שקריא לבני אדם.
--query-raw דומה ל---query, אבל מדפיס בייטים גולמיים עם קידוד פרוטו של tracing_service_state.proto.
--help | -h מדפיס טקסט עזרה לכלי perfetto.

מצב בהיר

התחביר הכללי לשימוש ב-perfetto במצב בהיר הוא:

 adb shell perfetto [ --time TIMESPEC ] [ --buffer SIZE ] [ --size SIZE ]
             [ ATRACE_CAT | FTRACE_GROUP/FTRACE_NAME | FTRACE_GROUP/* ]...
             --out FILE

בטבלה הבאה מפורטות האפשרויות הזמינות כשמשתמשים ב-perfetto במצב בהיר:

טבלה 2. רשימה של אפשרויות כלי perfetto זמינות כשמשתמשים במצב בהיר.

אפשרות תיאור
--time TIME[s|m|h] |
-t TIME[s|m|h]
מציינים את משך המעקב בשניות, בדקות או בשעות. לדוגמה, --time 1m מציין משך מעקב של דקה אחת. ברירת המחדל למשך הזמן היא 10 שניות.
--buffer SIZE[mb|gb] |
-b SIZE[mb|gb]
מציינת את גודל שטח האחסון הזמני במגה-בייט (mb) או בג'יגה-בייט (gb). פרמטר ברירת המחדל הוא --buffer 32mb.
--size SIZE[mb|gb] |
-s SIZE[mb|gb]
מציין את הגודל המקסימלי של הקובץ במגה-בייט (mb) או בגיגה-בייט (gb). כברירת מחדל, perfetto משתמש רק במאגר זמני בזיכרון.
--app | -a שם האפליקציה ל-Android ‏ (atrace)

אחרי האפשרויות האלה מופיעה רשימה של מפרטי אירועים:

טבלה 3. רשימה של מפרטי אירועים למצב בהיר.

אירוע תיאור
ATRACE_CAT מציינים את atrace הקטגוריות שרוצים לתעד עבורן נתוני מעקב. לדוגמה, הפקודה הבאה עוקבת אחרי Window Manager באמצעות atrace:
    adb shell perfetto --out FILE wm
    

כדי לתעד קטגוריות אחרות, אפשר לעיין ברשימה atrace של קטגוריות.

FTRACE_GROUP/FTRACE_NAME מציינים את ftrace האירועים שרוצים לתעד בנתוני המעקב. לדוגמה, הפקודה הבאה עוקבת אחרי אירועים מסוג sched/sched_switch:
      adb shell perfetto --out FILE sched/sched_switch
      

מצב רגיל

התחביר הכללי לשימוש ב-perfetto במצב רגיל הוא:

 adb shell perfetto [ --txt ] --config CONFIG_FILE --out FILE

בטבלה הבאה מפורטות האפשרויות הזמינות כשמשתמשים ב-perfetto במצב רגיל:

טבלה 4. רשימה של אפשרויות זמינות של כלי perfetto בשימוש במצב רגיל.

אפשרות תיאור
--config CONFIG_FILE | -c CONFIG_FILE מציין את הנתיב לקובץ תצורה. במצב רגיל, יכול להיות שחלק מההגדרות מקודדות ב-מאגר אחסון לפרוטוקולים של ההגדרות. הקובץ הזה צריך להיות תואם לסכימת מאגר אחסון לפרוטוקולים שמוגדרת ב-AOSP trace_config.proto.

בוחרים ומגדירים את מקורות הנתונים באמצעות חבר DataSourceConfig של TraceConfig, כפי שמוגדר ב-AOSP data_source_config.proto.

--txt ההגדרה הזו מורה ל-perfetto לנתח את קובץ ההגדרה כ-pbtxt. הדגל הזה מיועד לבדיקות מקומיות בלבד, ולא מומלץ להפעיל אותו בסביבת ייצור.

מקורות נתונים נתמכים

בקטע הזה מתוארים המקורות השונים שמשמשים את perfetto ליצירת נתוני המעקב.

ftrace

מקור הנתונים ftrace מאפשר ל-perfetto לקבל אירועים מהליבה.

כדי להפעיל את המקור הזה, צריך להגדיר את הערך ftrace_config ב-DataSourceConfig.

האירועים שאפשר להפעיל כוללים:

  • פעילות התזמון:

    • sched/sched_switch
    • sched/sched_wakeup
    • sched/sched_wakeup_new
    • sched/sched_process_exec
    • sched/sched_process_exit
    • sched/sched_process_fork
    • sched/sched_process_free
    • sched/sched_process_hang
    • sched/sched_process_wait
  • אירועים במערכת הקבצים:

  • atrace אירועים

יכול להיות שיהיו עוד אירועים זמינים, בהתאם למכשיר, לגרסת מערכת ההפעלה או לליבה. מידע נוסף זמין במאמר בנושא config protos.

נתונים סטטיסטיים של תהליך

מקור הנתונים של נתוני התהליך מאפשר לקבל מוניטורים שנבדקים לגבי המערכת ותהליכים ספציפיים.

כדי להפעיל את המקור הזה, מגדירים את process_stats_config ואת sys_stats_config ב-DataSourceConfig.

הנתונים ש-perfetto יוצר כוללים:

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

heapprofd

heapprofd מאפשרת לכם לדגום את הסיבות לשימוש בזיכרון מקומי.

כדי להפעיל את המקור הזה, מגדירים את heapprofd_config ב-DataSourceConfig. ההגדרה הזו יוצרת ProfilePackets, כולל מסגרות Java של מחסנית הקריאות.

מידע נוסף על השימוש ב-heapprofd זמין בכתובת perfetto.dev.

מקורות אחרים

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

מידע נוסף על perfetto זמין בכתובת perfetto.dev.