جمع بيانات الأداء

تسجل خدمة Watchdog الأصلية بيانات أداء الإدخال/الإخراج منذ البدء المبكر أثناء تشغيل النظام. تقوم الخدمة الأصلية بتفريغ بيانات الأداء المجمعة في تقرير الأخطاء. يمكن للموردين الاستعلام عن الخدمة الأصلية عبر dumpsys إما لتفريغ البيانات المجمعة أو بدء جلسة تجميع مخصصة لتصحيح الأخطاء.

تردد جمع البيانات

يختلف تكرار جمع بيانات الأداء حسب نوع البناء.

  • في إصدارات userdebug أو eng، تقوم Watchdog بجمع بيانات الأداء مرة واحدة كل (1) ثانية أثناء تمهيد النظام ومرة ​​كل دقيقة (1) بعد اكتمال التمهيد.
  • في إصدارات المستخدم، تقوم Watchdog بجمع بيانات الأداء مرة كل 20 ثانية أثناء تمهيد النظام ومرة ​​كل دقيقتين (2) بعد اكتمال التمهيد.

تفريغ بيانات الأداء

عند التقاط تقرير خطأ، تقوم خدمة Watchdog الأصلية بتفريغ بيانات الأداء المجمعة في تقرير الخطأ. يمكن للموردين الاستعلام عن الخدمة الأصلية عبر الأمر dumpsys أدناه لتفريغ بيانات الأداء المجمعة. راجع القسم الخاص بفهم تقرير بيانات الأداء للحصول على تفاصيل حول التقرير.

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

جمع بيانات الأداء لتصحيح الأخطاء

يمكن للموردين استخدام خدمة Watchdog الأصلية لجمع بيانات الأداء بشكل مخصص لأغراض تصحيح الأخطاء. على سبيل المثال، لفهم استخدام الإدخال/الإخراج لتطبيق أو خدمة، يمكن للبائعين إجراء مجموعة بيانات أداء مخصصة تحدد استخدام الإدخال/الإخراج إما لقائمة محددة من الحزم أو النظام بأكمله.

ابدأ جلسة التجميع المخصصة

يظهر أدناه الأمر لبدء جلسة جمع بيانات الأداء المخصصة:

$ 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

إيقاف وتفريغ جلسة التجميع المخصصة

بعد تسجيل استخدام الإدخال/الإخراج لتطبيق أو خدمة محل اهتمام، يجب على البائعين إيقاف جلسة جمع بيانات الأداء المخصصة لتفريغ البيانات المجمعة.

يقوم الأمر التالي بإيقاف جمع بيانات الأداء المخصصة وتفريغ البيانات المجمعة إلى /tmp/carwatchdog_dump.txt :

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

مساعدة دمبسي

$ 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 . الوقت المطلق لوحدة المعالجة المركزية والنسبة المئوية لإجمالي وقت وحدة المعالجة المركزية المستغرق في تبديل السياق أو الانتظار بسبب عمليات الإدخال/الإخراج منذ آخر مجموعة.
  • 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 الأعلى مع معظم مهام انتظار الإدخال/الإخراج.
    • يحتوي كل سطر من المستوى الأعلى على معرف المستخدم وأسماء الحزمة وعدد ونسبة المهام المملوكة للحزمة التي تنتظر الإدخال/الإخراج.
    • تحتوي خطوط المستوى الداخلي على معلومات انتظار الإدخال/الإخراج للعمليات العليا التي تمتلكها الحزمة.
  • Top N major page faults . حزم N الأعلى التي تحتوي على أكبر أخطاء الصفحة منذ المجموعة الأخيرة.
    • يحتوي كل سطر من المستوى الأعلى على معرف المستخدم وأسماء الحزم وعدد ونسبة أخطاء الصفحة الرئيسية المنسوبة إلى الحزمة.
    • تحتوي أسطر المستوى الداخلي على معلومات أخطاء الصفحة الرئيسية للعمليات العليا التي تمتلكها الحزمة.
  • Number of major page faults since last collection .
  • Percentage of change in major page faults since last collection .