أنواع الملفات الشخصية والحالات التي يكون فيها كل نوع مفيدًا

يمكنك تسجيل عدة أنواع من ملفات تعريف الأداء في Android. يساعدك جمع بيانات الأداء في تصحيح الأخطاء المتعلقة بسرعة تشغيل تطبيقك ومقدار الذاكرة التي يستخدمها ومقدار الطاقة التي يستهلكها وغير ذلك.

يوضّح هذا المستند أنواع الملفات التعريفية الأكثر فائدة وحالات استخدام كل نوع لتحديد وحلّ مشاكل الأداء الشائعة.

عمليات تتبُّع النظام

مثال على تتبُّع النظام
الشكل 1.: مثال على "تتبُّع النظام"

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

من منظور التطبيق، يمكن أن يشمل نوع المعلومات في عمليات التتبُّع مجموعة كبيرة من المجالات، بما في ذلك وقت الاستجابة والتشوّش والذاكرة والبطارية وغير ذلك.

تحتوي عمليات تتبُّع النظام على الأحداث المستندة إلى الرموز التالية التي يمكن أن يحدّدها النظام أو المستخدم. الأحداث المستندة إلى الرموز هي أحداث يمكن للمستخدمين بدءها من خلال استدعاءات الدوال.

  • شرائح التتبُّع: تمثّل الوقت بين نقاط مختلفة في الرمز البرمجي. ويمكن إضافتها باستخدام واجهات برمجة التطبيقات Trace.beginSection وTrace.endSection.
  • عدادات التتبُّع: قيم رقمية تمثّل المقاييس، مثل حجم الذاكرة المؤقتة. يمكن إضافتها باستخدام واجهة برمجة التطبيقات Trace.setCounter.

تحتوي عمليات تتبُّع النظام أيضًا على مقاييس يمكن إنشاؤها من طلبات بحث PerfettoSQL ويمكن استخدامها لإجراء عمليات تحليل أو مقارنة عمليات التتبُّع.

ننصحك باستخدام عمليات تتبُّع النظام لتنفيذ المهام التالية:

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

  • العثور على العمليات الحسابية المكرّرة: يمكن أن يكشف التتبُّع ما إذا كان يتم تكرار عمليات حسابية معيّنة، ما قد يشير إلى عمليات غير ضرورية.

  • تشخيص المشاكل المتعلّقة بتعارض عمليات القفل: من خلال المعلومات المتعلّقة بحالات سلاسل المحادثات والشرائح التي تعرض وقت حظر الموارد، يمكنك تحديد ما إذا كانت عمليات الحظر (مثل عمليات حظر synchronized) تتسبّب في حدوث تأخيرات في رحلات المستخدمين.

  • فهم عملية تنفيذ عدّة مهام في الوقت نفسه في تطبيقك: تقدّم عمليات التتبُّع عرضًا لعدّة سلاسل تعليمات، حيث تعرض حالة كل سلسلة تعليمات وأي شرائح تتبُّع أضافها النظام أو تطبيقك. يساعدك عرض سلاسل التعليمات المتعدّدة هذا في فهم سلاسل التعليمات النشطة أو غير النشطة أو ما يتم تنفيذه وكيفية تفاعلها.

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

تتيح عمليات تتبُّع النظام أيضًا تنفيذ طلبات بحث باستخدام PerfettoSQL. تتيح لك هذه الميزة الفعّالة ما يلي:

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

لقطات لعناصر متعدّدة من عيّنات التكدس

مثال على ملف تعريف عيّنة التكدس
الشكل 2.: مثال على ملف شخصي لعيّنة تكدّس

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

ننصحك باستخدام عيّنات الرموز البرمجية لتنفيذ ما يلي:

  • تحسين النقاط الفعّالة: تساعد عيّنات سلسلة استدعاء الدوال البرمجية في تحديد أجزاء الرمز التي تتضمّن نشاطًا كبيرًا لوحدة المعالجة المركزية، ما يعني أنّ سلسلة التنفيذ تكون غالبًا في حالة "قيد التشغيل".
  • فهم تنفيذ الرمز البرمجي: يمكن أن تساعدك عيّنات سلسلة استدعاء الدوال البرمجية في فهم السلوك العام لقاعدة الرموز البرمجية.
  • تحديد الرمز الذي يجب عدم تنفيذه قد تجد حِزم استدعاءات لم يكن من المفترض أن يتم تنفيذها على الإطلاق، ما يشير إلى فرص فورية لتحسين الأداء.

لقطات لأجزاء من الذاكرة

مثال على لقطة لأجزاء من الذاكرة
الشكل 3.: مثال على لقطة لأجزاء من الذاكرة

تعرض عمليات تفريغ ذاكرة التخزين المؤقت في Java لقطة من ذاكرة التخزين المؤقت في Java لتطبيقك. تتضمّن هذه اللقطة جميع العناصر وكيفية الإشارة إلى بعضها البعض في وقت أخذ التفريغ.

ننصحك بجمع تفريغات الذاكرة المؤقتة لتنفيذ ما يلي:

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

لقطات لعناصر متعدّدة

مثال على لقطة لعناصر متعدّدة
الشكل 4.: مثال على لقطة لعناصر متعدّدة

تتوفّر ملفات تعريف الذاكرة في إصدارَين، أحدهما أصلي والآخر Java، وهي ممتازة لتصحيح أخطاء الذاكرة. وهي تشبه عيّنات حزمة التنفيذ، ولكن بدلاً من قياس دورات وحدة المعالجة المركزية، يتم أخذ العيّنات عند تخصيص الذاكرة.

ننصحك باستخدام ملفات تعريف الذاكرة المؤقتة لتنفيذ ما يلي:

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

دمج الملفات الشخصية

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

إليك بعض السيناريوهات التي يكون فيها دمج الملفات الشخصية مفيدًا:

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

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