perfetto הוא כלי שמאפשר לאסוף מידע על הביצועים ממכשירי Android באמצעות ממשק הגישור של Android (ADB). מפעילים את הכלי perfetto באמצעות הפקודה adb shell perfetto ....
perfetto משתמש במקורות שונים כדי לאסוף עקבות ביצועים מהמכשיר שלכם, למשל:
-
ftraceלמידע מהליבה -
atraceלהערות במרחב המשתמש בשירותים ובאפליקציות heapprofdלמידע על השימוש בזיכרון המקומי של שירותים ואפליקציות
בדף הזה מוסבר איך לקרוא ל-perfetto ואיך להגדיר אותו כדי ליצור את הפלט הרצוי. מידע נוסף זמין במאמרי העזרה בנושא perfetto.
כישורים ב-Android
הצגה ב-GitHubניתוח נתוני מעקב ב-Perfetto
perfetto.android skills add [perfetto-trace-analyzer|perfetto-sql]תחביר
בקטע הזה מוסבר איך להשתמש ב-ADB כדי לקרוא ל-perfetto למצבים שונים וליצור מעקב.
בחירת מקור נתונים
perfetto כולל את שני המצבים הבאים שקובעים את מקורות הנתונים שבהם הוא משתמש כדי לתעד את העקבות:
- מצב בהיר: אפשר לבחור רק קבוצת משנה של מקורות נתונים, באופן ספציפי
atraceו-ftrace. עם זאת, הממשק של המצב הזה דומה לזה שלsystrace. - מצב רגיל: ההגדרה שלו מתבצעת ב-מאגר אחסון לפרוטוקולים, והוא מאפשר לכם להשתמש ביותר מהפונקציונליות של
perfettoבאמצעות מקורות נתונים שונים מ-atraceומ-ftrace.
אפשרויות כלליות
בטבלה הבאה מפורטות האפשרויות הזמינות כשמשתמשים ב-perfetto בכל אחד מהמצבים:
טבלה 1. רשימה של אפשרויות כלליות זמינות בכלי Perfetto.
| אפשרות | תיאור |
|---|---|
--background |
|
perfetto יוצא מיד מממשק שורת הפקודה וממשיך להקליט את הנתונים שלכם ברקע. |
--background-wait | -D
|
כמו --background, אבל ממתין (עד 30 שניות) שכל מקורות הנתונים יתחילו לפני היציאה. קוד היציאה הוא אפס אם מתקבל אישור מוצלח, ואחרת הוא לא אפס (שגיאה או פסק זמן).
|
--alert-id
|
המזהה של ההתראה שהפעילה את המעקב הזה. |
--config-id
|
המזהה של הגדרת ההפעלה. |
--config-uid
|
UID של האפליקציה שרשמה את ההגדרה. |
--subscription-id
|
מזהה המינוי שהפעיל את המעקב הזה. |
--out OUT_FILE |
|
מציינים את הנתיב הרצוי לקובץ המעקב של הפלט או הערה: צריך לציין את שם הנתיב המלא של קובץ הפלט. בדרך כלל, צריך לכתוב את הקבצים בתיקייה |
--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] |
|
מציינים את משך המעקב בשניות, בדקות או בשעות.
לדוגמה, --time 1m מציין משך מעקב של דקה אחת.
ברירת המחדל למשך הזמן היא 10 שניות.
|
--buffer SIZE[mb|gb] |
|
מציינת את גודל שטח האחסון הזמני במגה-בייט (mb) או בג'יגה-בייט (gb).
פרמטר ברירת המחדל הוא --buffer 32mb.
|
--size SIZE[mb|gb] |
|
מציין את הגודל המקסימלי של הקובץ במגה-בייט (mb) או בגיגה-בייט (gb). כברירת מחדל, perfetto משתמש רק במאגר זמני בזיכרון.
|
--app | -a
|
שם האפליקציה ל-Android (atrace) |
אחרי האפשרויות האלה מופיעה רשימה של מפרטי אירועים:
טבלה 3. רשימה של מפרטי אירועים למצב בהיר.
| אירוע | תיאור |
|---|---|
| ATRACE_CAT |
מציינים את atrace הקטגוריות שרוצים לתעד עבורן נתוני מעקב.
לדוגמה, הפקודה הבאה עוקבת אחרי Window Manager באמצעות 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 במצב רגיל:
טבלה 4. רשימה של אפשרויות זמינות של כלי perfetto
בשימוש במצב רגיל.
| אפשרות | תיאור |
|---|---|
--config CONFIG_FILE | -c CONFIG_FILE
|
מציין את הנתיב לקובץ תצורה. במצב רגיל, יכול להיות שחלק מההגדרות מקודדות ב-מאגר אחסון לפרוטוקולים של ההגדרות. הקובץ הזה צריך להיות תואם לסכימת מאגר אחסון לפרוטוקולים שמוגדרת ב-AOSP trace_config.proto.
בוחרים ומגדירים את מקורות הנתונים באמצעות חבר |
--txt
|
ההגדרה הזו מורה ל-perfetto לנתח את קובץ ההגדרה כ-pbtxt. הדגל הזה מיועד לבדיקות מקומיות בלבד, ולא מומלץ להפעיל אותו בסביבת ייצור. |
מקורות נתונים נתמכים
בקטע הזה מתוארים המקורות השונים שמשמשים את perfetto ליצירת נתוני המעקב.
ftrace
מקור הנתונים ftrace מאפשר ל-perfetto לקבל אירועים מהליבה.
כדי להפעיל את המקור הזה, צריך להגדיר את הערך
ftrace_config
ב-DataSourceConfig.
האירועים שאפשר להפעיל כוללים:
-
sched/sched_switchsched/sched_wakeupsched/sched_wakeup_newsched/sched_process_execsched/sched_process_exitsched/sched_process_forksched/sched_process_freesched/sched_process_hangsched/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 של מחסנית הקריאות.
מידע נוסף על השימוש ב-heapprofd זמין בכתובת perfetto.dev.
מקורות אחרים
יכול להיות שיהיו מקורות נתונים נוספים, בהתאם למכשיר, לגרסת מערכת ההפעלה ולליבת המערכת. למידע נוסף, אפשר לעיין בפרוטוקולים של הגדרות מקורות נתונים.
מידע נוסף על perfetto זמין בכתובת perfetto.dev.