فحص الآثار

يوفر عرض التتبع في أداة تحليل وحدة المعالجة المركزية عدة طرق لعرض المعلومات من التتبعات المسجلة.

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

تتوفّر اختصارات الماوس ولوحة المفاتيح للتنقّل بسهولة في مخططات المكالمات أو أحداث التتبُّع.

فحص آثار الأنشطة باستخدام رسم بياني للاتصال

يوفّر الرسم البياني للاستدعاء تمثيلاً بيانيًا لتتبّع الطريقة أو تتبُّع الدوال، حيث يتم تمثيل فترة المكالمة وتوقيتها على المحور الأفقي، كما يتم عرض المستخدمين على طول المحور الرأسي. تظهر الطلبات إلى واجهات برمجة التطبيقات للنظام باللون البرتقالي، بينما تظهر الطلبات إلى طرق تطبيقك الخاصة باللون الأخضر، بينما يتم عرض الطلبات إلى واجهات برمجة التطبيقات التابعة لجهات خارجية (بما في ذلك واجهات برمجة التطبيقات بلغة Java) باللون الأزرق. يوضح الشكل 4 مثالاً لمخطط استدعاء ويوضح مفهوم وقت الذات، ووقت الأطفال، والوقت الإجمالي لطريقة أو وظيفة معينة. يمكنك التعرُّف على مزيد من المعلومات عن هذه المفاهيم في القسم المتعلّق بكيفية فحص عمليات التتبّع باستخدام من أعلى إلى أسفل ومن أسفل إلى أعلى.

الشكل 1. مثال على مخطط استدعاء يوضح النفس والأطفال والوقت الإجمالي للطريقة D.

ملاحظة: للانتقال السريع إلى رمز المصدر لطريقة أو دالة، انقر بزر الماوس الأيمن عليه واختَر الانتقال إلى المصدر. ويمكن إجراء ذلك من أي علامة تبويب في لوحة "التحليل".

فحص آثار الأنشطة باستخدام علامة التبويب "مخطط متحرك"

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

للمساعدة في توضيح هذا المفهوم، ضع في اعتبارك مخطط المكالمات في الشكل 2. لاحظ أن الطريقة D تُجري استدعاءات متعددة إلى B (B1 وB2 وB3)، وبعض هذه الطلبات إلى B تُجري استدعاءات إلى C (C1 وC3).

الشكل 2. مخطط استدعاء مع استدعاءات طرق متعددة تتشارك في تسلسل مشترك من المتصلين.

بما أنّ B1 وB2 وB3 تشتركان في نفس تسلسل المتصلين (A → D → B) يتم تجميعهما على النحو الموضّح في الشكل 3. وبالمثل، يتم تجميع C1 وC3 لأنهما يتشاركان في نفس تسلسل المتصلين (A → D → B → C). لاحظ أن C2 غير مضمَّنة لأنه يتضمن تسلسلاً مختلفًا من المتصلين (A → D → C).

الشكل 3. تجميع طرق متطابقة تتشارك نفس مكدس الاستدعاء.

يتم استخدام الطلبات المجمّعة لإنشاء مخطط لهب، كما هو موضح في الشكل 4. مع العلم أنه عند إجراء أي استدعاء في رسم بياني لهب، يظهر أولاً المتصلون الذين يستهلكون أكبر قدر من وقت وحدة المعالجة المركزية (CPU).

الشكل 4. تمثيل مخطط اللهب لمخطط الاستدعاء الموضح في الشكل 5.

فحص آثار الأنشطة باستخدام من "أعلى إلى أسفل" و"من أسفل إلى أعلى"

تعرِض علامة التبويب من أعلى لأسفل قائمة بالمكالمات التي يعرض فيها توسيع طريقة أو عقدة دالة الأشخاص المتصلين بها. يوضح الشكل 5 رسمًا بيانيًا من أعلى لأسفل لمخطط الاتصال في الشكل 1. يشير كل سهم في الرسم البياني من متصل إلى متصل.

كما هو موضح في الشكل 5، يؤدي توسيع العقدة للطريقة "أ" في علامة التبويب من أعلى لأسفل إلى عرض المتصلين والطريقتين "ب" و"د". بعد ذلك، يؤدي توسيع العقدة للطريقة D إلى إظهار الاستدعاءات والطرق B وC وما إلى ذلك. على غرار علامة التبويب مخطط فلام، يجمع العرض التدرّجي من الأعلى للأسفل معلومات التتبُّع للطرق المتطابقة التي تشارك نفس حزمة الاستدعاءات. بمعنى أن علامة التبويب المخطط الحراري تقدم تمثيلاً بيانيًا لعلامة التبويب من أعلى لأسفل.

توفّر علامة التبويب Top Down المعلومات التالية للمساعدة في وصف وقت وحدة المعالجة المركزية (CPU) الذي يتم قضاؤه في كل استدعاء (يتم تمثيل الأوقات أيضًا كنسبة مئوية من إجمالي وقت السلسلة خلال النطاق المحدد):

  • الذات: الوقت الذي قضاه استدعاء الطريقة أو الدالة في تنفيذ التعليمات البرمجية الخاصة به وليس تنفيذ تعليمات المتصلين، كما هو موضح في الشكل 1 للطريقة د.
  • أطفال: الوقت الذي يقضيه استدعاء الطريقة أو الدالة في تنفيذ الأشخاص وليس التعليمات البرمجية الخاصة به، كما هو موضح في الشكل 1 للطريقة "د".
  • الإجمالي: مجموع الوقت الذاتي والأطفال في الطريقة. يمثل هذا الوقت الإجمالي الذي قضاه التطبيق في تنفيذ مكالمة، كما هو موضح في الشكل 1 للطريقة "د".

الشكل 5. شجرة من أعلى للأسفل.

الشكل 6. شجرة من أسفل إلى أعلى للطريقة C من الشكل 5.

تعرض علامة التبويب من أسفل إلى أعلى قائمة بالمكالمات التي يعرض فيها توسيع عقدة دالة أو طريقة ما المتصلين بها. باستخدام مثال تعقب الموضح في الشكل 5، يقدم الشكل 6 شجرة من أسفل إلى أعلى للطريقة C. يؤدي فتح العقدة الخاصة بالطريقة "ج" في الشجرة السفلية إلى عرض كل من المتصلين الفريدين والطريقتين B وD. لاحظ أنه على الرغم من أن B تستدعي C مرتين، فإنها تظهر مرة واحدة فقط عند توسيع العقدة للطريقة C في الشجرة من الأسفل إلى الأعلى. بعد ذلك، يؤدي توسيع العقدة الخاصة بـ B إلى عرض المتصل الخاص بها، والطريقتين A وD.

تُعد علامة التبويب من أسفل إلى أعلى مفيدة لترتيب طرق أو وظائف التطبيقات التي تستهلك أكبر (أو أقل) وقت وحدة المعالجة المركزية (CPU). يمكنك فحص كل عقدة لتحديد المتصلين الذين يقضون معظم وقت وحدة المعالجة المركزية في استدعاء هذه الطرق أو الوظائف. مقارنةً بالشجرة من أعلى إلى أسفل، تشير معلومات التوقيت لكل طريقة أو دالة في العرض التدرّجي إلى الأسفل إلى الطريقة في أعلى كل شجرة (العقدة العلوية). ويتم تمثيل وقت وحدة المعالجة المركزية أيضًا كنسبة مئوية من الوقت الإجمالي للسلسلة أثناء التسجيل. يساعد الجدول التالي في شرح كيفية تفسير معلومات التوقيت للعقدة العلوية والمتصلين بها (العُقد الفرعية).

نفسي أطفال المجموع
الطريقة أو الدالة في أعلى الشجرة من أسفل إلى أعلى (العقدة العلوية) يمثّل هذا المقياس الوقت الإجمالي الذي تم استغراقه الطريقة أو الدالة في تنفيذ رموزها الخاصة وليس الوقت الذي تم قضاؤه في تنفيذ رموزها. مقارنةً بالشجرة من الأعلى إلى الأسفل، تمثّل معلومات التوقيت هذه مجموع الطلبات المقدّمة لهذه الطريقة أو الدالة على مدار مدة التسجيل. يمثّل هذا المقياس الوقت الإجمالي الذي تقضيه الطريقة أو الدالة في تنفيذ طلباتها وليس الرمز الخاص بها. مقارنةً بالشجرة من الأعلى إلى الأسفل، تمثّل معلومات التوقيت هذه مجموع جميع الطلبات المقدَّمة للمتصلين بهذه الطريقة أو الدالة على مدار مدة التسجيل. مجموع وقت الذات ووقت الأطفال.
المتصلون (عُقد فرعية) يمثّل هذا المقياس إجمالي الوقت الذاتي للمتصل عندما يتصل به المتصل. باستخدام الشجرة من أسفل إلى أعلى في الشكل 6 كمثال، سيكون وقت الذات للطريقة "ب" مساويًا لمجموع الضربات الذاتية لكل عملية تنفيذ للطريقة "ج" عند طلبها من خلال "ب". يمثّل هذا المقياس إجمالي الوقت الذي يقضيه المتصلون في المكالمة عندما يستدعيهم المتصل. وباستخدام الشجرة من أسفل إلى أعلى في الشكل 6 كمثال، فإن وقت العناصر الثانوية للطريقة "ب" يساوي مجموع الضربات الثانوية لكل تنفيذ الطريقة C عند استدعائها بواسطة B. مجموع وقت الذات ووقت الأطفال.

ملاحظة: بالنسبة إلى تسجيل معيّن، يتوقف "استوديو Android" عن جمع بيانات جديدة عندما يصل محلّل البيانات إلى الحدّ الأقصى المسموح به لحجم الملف (ولكن ذلك لا يؤدي إلى إيقاف التسجيل). وعادةً ما يحدث ذلك بسرعة أكبر عند تنفيذ عمليات التتبُّع المستندة إلى بيانات، لأنّ هذا النوع من التتبُّع يجمع المزيد من البيانات في وقت أقصر، مقارنةً بالتتبُّع المستند إلى عينات. وفي حال تمديد وقت الفحص إلى فترة التسجيل التي حدثت بعد الوصول إلى الحدّ الأقصى، لن تتغير بيانات التوقيت في لوحة التتبُّع (بسبب عدم توفُّر بيانات جديدة). بالإضافة إلى ذلك، يعرض جزء التتبُّع NaN لمعلومات التوقيت عند اختيار جزء فقط من التسجيل الذي لا تتوفّر فيه بيانات.

فحص الآثار باستخدام جدول "الأحداث"

يسرد جدول "الأحداث" جميع الطلبات في سلسلة المحادثات المحدّدة حاليًا. يمكنك فرزها بالنقر فوق رؤوس الأعمدة. من خلال تحديد صف في الجدول، يمكنك التنقل في المخطط الزمني إلى وقت بدء المكالمة المحددة وانتهائها. يتيح لك ذلك تحديد الأحداث على المخطط الزمني بدقة.

الشكل 7. عرض علامة التبويب "الأحداث" في لوحة "التحليل".

فحص إطارات تكديس المكالمات

تعتبر تكدسات الاستدعاءات مفيدة لفهم جزء التعليمة البرمجية الذي تم تنفيذه، وسبب استدعائها. إذا تم جمع تسجيل نموذج لـ Callstack لبرنامج Java/Kotlin، لا يتضمن تكدس البيانات عادةً رمز Java/Kotlin فحسب، بل يتضمن أيضًا إطارات من الرمز الأصلي JNI، وآلة Java الافتراضية (على سبيل المثال، android::AndroidRuntime::start) ونواة النظام ([kernel.kallsyms]+offset). ويرجع ذلك إلى أنّ برنامج Java/Kotlin يتم تنفيذه عادةً من خلال جهاز افتراضي بلغة Java. يلزم توفّر الرمز الأصلي لتشغيل البرنامج نفسه وأن يتعامل البرنامج مع النظام والأجهزة. ويقدم المحلل هذه الإطارات للتأكد من دقتها؛ ومع ذلك، بناءً على تحقيقك، قد تجد أو لا تجد إطارات الاتصال الإضافية هذه مفيدة. ويوفّر المحلِّل طريقة لتصغير الإطارات التي لا تهمّك حتى تتمكّن من إخفاء معلومات ليست ذات صلة ببحثك.

في المثال أدناه، يتضمّن التتبّع أدناه العديد من الإطارات المصنّفة بـ [kernel.kallsyms]+offset، وهي ليست مفيدة حاليًا للتطوير.

مثال على تتبُّع المكالمات

لتصغير هذه الإطارات إلى إطار واحد، يمكنك تحديد الزر تصغير الإطارات من شريط الأدوات واختيار المسارات لتصغيرها وتحديد الزر تطبيق لتطبيق التغييرات. في هذا المثال، المسار هو [kernel.kallsyms].

مثال على قائمة الأداء البسيطة

يؤدي القيام بذلك إلى تصغير الإطارات المقابلة للمسار المحدد على كل من اللوحات اليمنى واليسرى، كما هو موضح أدناه.

مثال على الإطارات المصغّرة البسيطة للأداء

فحص عمليات تتبُّع النظام

عند فحص عمليات تتبُّع النظام، يمكنك فحص أحداث التتبُّع في المخطط الزمني لسلاسل المحادثات للاطّلاع على تفاصيل الأحداث التي تقع في كل سلسلة محادثات. مرِّر مؤشر الماوس فوق أحد الأحداث لرؤية اسم الحدث والوقت المستغرق في كل حالة. انقر على حدث للاطّلاع على مزيد من المعلومات في جزء التحليل.

فحص عمليات تتبُّع النظام: نوى وحدة المعالجة المركزية (CPU)

بالإضافة إلى بيانات جدولة وحدة المعالجة المركزية (CPU)، تتضمن عمليات تتبُّع النظام أيضًا معدّل تكرار وحدة المعالجة المركزية (CPU) حسب النواة. يوضّح هذا مقدار النشاط على كل نواة، ويمكن أن يساعدك في تحديد النواة"الكبيرة" أو "الصغيرة" في معالِجات البيانات الحديثة على الأجهزة الجوّالة.

الشكل 8. عرض نشاط وحدة المعالجة المركزية (CPU) وتتبُّع الأحداث لسلسلة محادثات العرض

تعرض لوحة نواة وحدة المعالجة المركزية (CPU) (كما هو موضح في الشكل 8) نشاط سلسلة المحادثات المجدول على كل نواة. مرر مؤشر الماوس فوق نشاط سلسلة المحادثات لمعرفة سلسلة التعليمات الأساسية التي يعمل عليها هذا الوقت بالذات.

للحصول على معلومات إضافية عن فحص معلومات تتبُّع النظام، يُرجى الاطّلاع على قسم التحقيق في مشاكل أداء واجهة المستخدم في مستندات systrace.

فحص عمليات تتبُّع النظام: المخطط الزمني لعرض الإطار

يمكنك التحقّق من المدة التي يستغرقها تطبيقك لعرض كل إطار على سلسلة التعليمات الرئيسية، وRenderThread للتحقّق من المؤثِّرات السلبية التي تؤدي إلى تعطُّل واجهة المستخدم ومعدلات عرض إطارات منخفضة. للتعرف على كيفية استخدام تتبعات النظام للتحقيق في البيانات غير المحتملة لواجهة المستخدم والمساعدة في الحد منها، راجع اكتشاف مشكلات واجهة المستخدم.

فحص عمليات تتبُّع النظام: ذاكرة المعالجة (RSS)

بالنسبة إلى التطبيقات المنشورة على أجهزة تعمل بنظام التشغيل Android 9 أو إصدار أحدث، يعرض قسم ذاكرة المعالجة (RSS) مقدار الذاكرة الفعلية التي يستخدمها التطبيق حاليًا.

الشكل 9. عرض الذاكرة الفعلية في المحلِّل

الإجمالي

هذا هو المقدار الإجمالي للذاكرة المادية التي تستخدمها حاليًا عمليتك. في الأنظمة التي تعمل بـ Unix، يُعرف ذلك باسم "حجم مجموعة المقيمين"، وهو تركيبة من كل الذاكرة المستخدمة من خلال عمليات التوزيع المجهولة، وتعيينات الملفات، وتوزيعات الذاكرة المشتركة.

بالنسبة إلى مطوّري نظام التشغيل Windows، يشابه حجم المجموعة المقيم حجم مجموعة العمل.

المخصّصة

يتتبع هذا العدّاد مقدار الذاكرة الفعلية التي يتم استخدامها حاليًا بواسطة تخصيصات الذاكرة العادية للعملية. هذه هي التخصيصات المجهولة (غير مدعومة بملف محدد) والخاصة (غير المشتركة). في معظم التطبيقات، تتألف هذه التطبيقات من عمليات تخصيص كومة الذاكرة المؤقتة (باستخدام malloc أو new) وذاكرة مكدّسة. عند التبديل من الذاكرة الفعلية، تتم كتابة هذه التخصيصات في ملف تبديل النظام.

تعيينات الملفات

يتتبع هذا العداد مقدار الذاكرة الفعلية التي تستخدمها العملية لتعيينات الملفات - أي الذاكرة التي يتم تعيينها من الملفات إلى منطقة من الذاكرة عن طريق مدير الذاكرة.

الفيديوهات التي تمّت مشاركتها

يتتبع هذا العدّاد مقدار الذاكرة الفعلية التي يتم استخدامها لمشاركة الذاكرة بين هذه العملية والعمليات الأخرى في النظام.