איסוף נתוני ביצועים

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

תדירות איסוף נתונים

תדירות איסוף נתוני הביצועים משתנה לפי סוג ה-build.

  • ב-userdebug או eng builds, Watchdog אוסף נתוני ביצועים פעם אחת בכל (1) שנייה במהלך אתחול המערכת ופעם אחת בכל דקה (1) לאחר השלמת האתחול.
  • בבניית משתמש, Watchdog אוספת נתוני ביצועים אחת ל-20 שניות במהלך אתחול המערכת ואחת לשתי (2) דקות לאחר השלמת האתחול.

זרוק נתוני ביצועים

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

$ adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default > /tmp/carwatchdog_dump.txt

אסוף נתוני ביצועים לצורך איתור באגים

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

התחל מפגש איסוף מותאם אישית

מוצגת להלן הפקודה להתחיל מפגש איסוף נתוני ביצועים מותאם אישית:

$ adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default --start_perf [--interval <seconds>] [--max_duration <seconds>] [--filter_packages <package_name>,<package_name>,...]
  • --start_perf . מתחיל מפגש איסוף נתוני ביצועים מותאם אישית.
  • --interval <seconds> . מציין את מרווח הפרופיל. כברירת מחדל, המרווח הוא 30 שניות.
  • --max_duration <seconds> . מציין את משך הזמן המקסימלי של הפעלת נתוני הביצועים המותאמים אישית. אם ההפעלה לא מופסקת ידנית, ההפעלה נעצרת והנתונים שנאספו נמחקים לאחר משך זה. כברירת מחדל, משך הזמן המרבי הוא 30 דקות.
  • --filter_packages <package_name>,<package_name>,... . מציין רשימה מופרדת בפסיקים של שמות חבילות לפרופיל. כאשר מסופק, איסוף נתוני הביצועים מוגבל לחבילות אלה. אחרת, איסוף נתוני הביצועים מתבצע עבור כל החבילות במערכת.

לדוגמה, הפקודה למטה מתחילה איסוף נתוני ביצועים מותאם אישית עם מרווח פרופיל של 10 seconds , משך איסוף מקסימלי של 1 hour , ומגבילה את הפרופיל ל- com.google.android.car.kitchensink ו- com.google.android.apps.maps חבילות com.google.android.apps.maps .

$ adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default --start_perf --interval 10 --max_duration 3600 --filter_packages com.google.android.car.kitchensink,com.google.android.apps.maps

עצור ושחרר מפגש איסוף מותאם אישית

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

הפקודה הבאה עוצרת את איסוף נתוני הביצועים המותאמים אישית ומשליכה את הנתונים שנאספו אל /tmp/carwatchdog_dump.txt :

$ adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default --stop-perf > /tmp/carwatchdog_custom_dump.txt

עזרה של Dumpsys

$ adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default --help

הבן את דוח נתוני הביצועים

להלן דוח נתוני ביצועים לדוגמה:

$ adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default

------------------------------
WatchdogPerfService report:
------------------------------
Boot-time collection information:
==========================
Event interval: 1 second

Periodic collection information:
=========================
Event interval: 60 seconds
--------------------------------
Boot-time I/O performance report:
============================
Collection duration: 1637609138 seconds
Number of collections: 12

Collection 0: <Fri Jan  7 19:53:53 2022 GMT>
===================================
CPU I/O wait time/percent: 18 / 0.63%
Number of I/O blocked processes/percent: 0 / 0.00%

Top N Reads:
-------------
Android User ID, Package Name, Foreground Bytes, Foreground Bytes %, Foreground Fsync, Foreground Fsync %, Background Bytes, Background Bytes %, Background Fsync, Background Fsync %
0, root, 56123392, 81.95%, 1, 100.00%, 0, 0.00%, 0, 0.00%
0, system, 12333056, 18.01%, 0, 0.00%, 0, 0.00%, 0, 0.00%

Top N Writes:
-------------
Android User ID, Package Name, Foreground Bytes, Foreground Bytes %, Foreground Fsync, Foreground Fsync %, Background Bytes, Background Bytes %, Background Fsync, Background Fsync %
0, root, 53248, 100.00%, 1, 100.00%, 0, 0.00%, 0, 0.00%

Top N I/O waiting UIDs:
-----------------------
Android User ID, Package Name, Number of owned tasks waiting for I/O, Percentage of owned tasks waiting for I/O
        Command, Number of I/O waiting tasks, Percentage of UID's tasks waiting for I/O
0, root, 2, 0.59%
        kworker/7:2+events, 1, 50.00%
        kworker/4:2+events, 1, 50.00%
0, system, 2, 7.14%
        ais_server, 2, 100.00%

Top N major page faults:
------------------------
Android User ID, Package Name, Number of major page faults, Percentage of total major page faults
        Command, Number of major page faults, Percentage of UID's major page faults
0, system, 48, 53.33%
        ais_server, 13, 27.08%
        audiod, 10, 20.83%
0, root, 41, 45.56%
        init, 39, 95.12%
        ueventd, 1, 2.44%
0, media, 1, 1.11%
        init.qti.media., 1, 100.00%
Number of major page faults since last collection: 90
Percentage of change in major page faults since last collection: 0.00%

Collection 1: <Fri Jan  7 19:53:54 2022 GMT>
===================================
 … Collection data …

Collection 2: <Fri Jan  7 19:53:55 2022 GMT>
===================================
 … Collection data …
 … Repeated collection data until boot-complete …

-----------------------------------------
Last N minutes I/O performance report:
================================
Collection duration: 10797 seconds
Number of collections: 181

Collection 0: <Tue Jan 11 19:43:05 2022 GMT>
====================================
CPU I/O wait time/percent: 18 / 0.04%
Number of I/O blocked processes/percent: 0 / 0.00%

Top N Writes:
-------------
Android User ID, Package Name, Foreground Bytes, Foreground Bytes %, Foreground Fsync, Foreground Fsync %, Background Bytes, Background Bytes %, Background Fsync, Background Fsync %
0, system, 33697792, 92.41%, 0, 0.00%, 0, 0.00%, 0, 0.00%
0, gps, 2420736, 6.64%, 0, 0.00%, 0, 0.00%, 0, 0.00%

Top N I/O waiting UIDs:
-----------------------
Android User ID, Package Name, Number of owned tasks waiting for I/O, Percentage of owned tasks waiting for I/O
        Command, Number of I/O waiting tasks, Percentage of UID's tasks waiting for I/O
0, root, 1, 0.19%
        crtc_commit:244, 1, 100.00%

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

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

  • Boot-time collection information . מספק מידע על הפגישה של איסוף נתוני ביצועים בזמן האתחול.
  • Periodic collection information . מספק מידע על הפעלת איסוף הביצועים התקופתית שמתחילה לאחר סיום האתחול.
  • Boot-time I/O performance report . מכיל נתוני ביצועים שנאספו במהלך אתחול המערכת. נתונים אלה נמצאים בזיכרון קבוע עד כיבוי המערכת, כך שהנתונים נשפכים בכל הדוחות.
  • Last N minutes I/O performance report . מכיל נתוני ביצועים שנאספו (על ידי הפעלת האיסוף התקופתית) במהלך N הדקות האחרונות לפני יצירת הדוח.
  • Collection duration . משך הזמן הכולל של איסוף נתוני הביצועים.
  • Number of collections . המספר הכולל של אוספים שדווחו בדוח יחיד.

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

  • CPU I/O wait time/percent . זמן CPU מוחלט ואחוז מזמן ה-CPU הכולל שהושקע בהחלפת הקשר או המתנה עקב פעולות קלט/פלט מאז האיסוף האחרון.
  • Number of I/O blocked processes/percent . המספר הכולל של תהליכים חסומים בהמתנה לקלט/פלט ואחוז תהליכים חסומים בהמתנה לקלט/פלט מאז האיסוף האחרון.
  • Top N Reads . N חבילות מובילות שקוראות את רוב הנתונים מהדיסק מאז האיסוף האחרון.
    • כל שורה מכילה את מזהה המשתמש, שם החבילה, המספר הכולל של בתים שנקראו במצב קדמה לעומת מצב רקע, אחוז הבתים על פני כל מצב החזית לעומת מצב רקע קריאות במערכת, המספר הכולל של קריאות fsync שבוצעו במצב חזית לעומת מצב רקע, ואחוז קריאות fsync בכל מצב חזית לעומת קריאות fsync במצב רקע שנעשו במערכת.
  • Top N Writes . N חבילות מובילות שכתבו את רוב הנתונים לדיסק מאז האיסוף האחרון.
    • כל שורה מכילה שדות דומים לזה של Top N Reads .
  • Top NI/O waiting UIDs . N חבילות מובילות עם הכי הרבה משימות המתנה ל-I/O.
    • כל שורה ברמה העליונה מכילה את מזהה המשתמש, שמות החבילות, מספר ואחוז המשימות שבבעלות החבילה הממתינה לקלט/פלט.
    • קווים ברמה הפנימית מכילים את מידע ה-I/O המתנה לתהליכים העליונים שבבעלות החבילה.
  • Top N major page faults . Top N חבילות עם תקלות הדפים הגדולות ביותר מאז האיסוף האחרון.
    • כל שורה ברמה העליונה מכילה את מזהה המשתמש, שמות החבילות, מספר ואחוז תקלות העמוד העיקריות המיוחסות לחבילה.
    • קווים ברמה הפנימית מכילים את מידע תקלות העמוד העיקריות עבור התהליכים המובילים בבעלות החבילה.
  • Number of major page faults since last collection .
  • Percentage of change in major page faults since last collection .