Perfetto

perfetto הוא כלי שמאפשר לאסוף מידע על ביצועים מ- מכשירי Android דרך Android Debug Bridge (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) בהגדרות של מעקב האב.
--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 (האצה)

אחרי האפשרויות הבאות מופיעה רשימה של מצייןי אירועים:

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

אירוע תיאור
ATRACE_CAT המדיניות הזו מציינת את הקטגוריות של atrace שעבורן רוצים לתעד מעקב. לדוגמה, הפקודה הבאה עוקבת אחרי מנהל החלונות באמצעות 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 מאפשר ל-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 של ה-calltack.

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

מקורות אחרים

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

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