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
בכל
מצב:
אפשרות | תיאור |
---|---|
--background |
|
הפקודה perfetto יוצאת מיד מממשק שורת הפקודה וממשיכים.
מתעדת את המעקב ברקע. |
--background-wait | -D
|
כמו --background , אבל בהמתנה (עד 30 שניות) לכולם
מקורות נתונים שיתחילו לפני היציאה. לצאת
הקוד הוא אפס אם אישור מוצלח הוא
התקבל ואינו אפס אחרת (שגיאה או זמן קצוב לתפוגה).
|
--alert-id
|
המזהה של ההתראה שהפעילה את המעקב הזה. |
--config-id
|
המזהה של הגדרת הטריגר. |
--config-uid
|
UID של האפליקציה שרשמת את ההגדרה. |
--subscription-id
|
מזהה המינוי שהפעיל את המעקב הזה. |
--out OUT_FILE |
|
מציינת את הנתיב הרצוי לקובץ מעקב הפלט או הערה: יש לציין את שם הנתיב המלא של
מקובץ פלט. בדרך כלל צריך לכתוב את הקבצים
תיקייה אחת ( |
--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
ב-
מצב בהיר:
אפשרות | תיאור |
---|---|
--time TIME[s|m|h] |
|
מציינת את משך המעקב בשניות, בדקות או בשעות.
לדוגמה, הערך --time 1m מציין משך מעקב של דקה.
ברירת המחדל למשך הזמן היא 10 שניות.
|
--buffer SIZE[mb|gb] |
|
המדיניות מציינת את הגודל של מאגר הנתונים הזמני של הצלצול במגה-בייט (mb) או בג'יגה-בייט (gb).
פרמטר ברירת המחדל הוא --buffer 32mb .
|
--size SIZE[mb|gb] |
|
מציין את גודל הקובץ המקסימלי ביחידות מגה-בייט (mb) או ג'יגה-בייט (GB). על ידי
כברירת מחדל, perfetto משתמש רק במאגר נתונים זמני של זיכרון.
|
--app | -a
|
שם האפליקציה ל-Android (האצה) |
אחרי האפשרויות הבאות מופיעה רשימה של מצייןי אירועים:
אירוע | תיאור |
---|---|
ATRACE_CAT |
המדיניות הזו מציינת את הקטגוריות של atrace שעבורן רוצים לתעד מעקב.
לדוגמה, הפקודה הבאה עוקבת אחרי מנהל החלונות באמצעות atrace :
adb shell perfetto --out FILE wm
כדי להקליט קטגוריות אחרות, יש לעבור אל
רשימה
מתוך |
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
ב-
מצב רגיל:
אפשרות | תיאור |
---|---|
--config CONFIG_FILE | -c CONFIG_FILE
|
מציינת את הנתיב לקובץ התצורה. במצב רגיל, חלק
עשויות להיות מקודדות במאגר נתונים זמני של פרוטוקול תצורה. הקובץ הזה
חייב לעמוד בדרישות של סכימת מאגר הנתונים הזמני של הפרוטוקולים שהוגדרה
AOSP trace_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
אירועים במערכת הקבצים:
בהתאם למכשיר, לגרסת מערכת ההפעלה או לליבה, ייתכן שיהיו אירועים נוספים זמינים. מידע נוסף זמין במאמר config protos.
סטטיסטיקה של תהליך
מקור הנתונים של הנתונים הסטטיסטיים של התהליך מאפשר לקבל מוני סקרים לגבי במערכת ותהליכים פרטניים.
כדי להפעיל את המקור הזה, צריך להגדיר process_stats_config
ו-sys_stats_config
ב-DataSourceConfig.
הנתונים שנוצרו על ידי perfetto
כוללים את:
-
/proc/meminfo
/proc/vmstat
/proc/stat
-
/proc/\<pid\>/status
/proc/\<pid\>/oom_score_adj
בהתאם למכשיר, לגרסת מערכת ההפעלה ולליבה, ייתכן שיהיו אירועים נוספים
זמינים. מידע נוסף זמין במאמרי ההגדרות של sys_stats
ו-process_stats
.
heapprofd
באמצעות heapprofd
אפשר לדגום את הגורמים לשימוש בזיכרון נייטיב.
כדי להפעיל את המקור הזה, צריך להגדיר heapprofd_config
ב-DataSourceConfig. ההגדרה הזו יוצרת ProfilePackets
,
כולל פריימים של Java של ה-calltack.
מידע נוסף על אופן השימוש ב-heapprofd
זמין בכתובת
perfetto.dev
.
מקורות אחרים
בהתאם למכשיר, לגרסת מערכת ההפעלה ולליבה, יכול להיות מקורות נתונים נוספים זמינים. מידע נוסף זמין protos config של מקור נתונים.
מידע נוסף על perfetto
זמין בכתובת
perfetto.dev