تحليل كفاءة الذاكرة

تُعدّ خصائص استخدام الذاكرة في التطبيق جانبًا أساسيًا من جوانب أدائه. يمكنك استخدام System Profiler لتحليل هذه الخصائص من خلال الاطّلاع على معلومات عدّاد وحدة معالجة الرسومات المتاحة.

أجهزة Adreno

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

مخطط الاستخدام الذي يتوافق مع العدادات ذات الصلة أدناه
الشكل 1. مخطط الاستخدام الذي يتوافق مع العدادات ذات الصلة أدناه

إجمالي عمليات القراءة والكتابة

بعد تمييز إطار واحد في أداة تحليل الأداء، ابدأ بالاطّلاع على عدّادات إجمالي القراءة (بايت/ثانية) وإجمالي الكتابة (بايت/ثانية). تقدّم هذه العدادات نظرة عامة جيدة على مقدار البيانات التي تعبر ناقل الذاكرة خلال إطار واحد. حاوِل تقليل كمية البيانات التي ترسلها عبر ناقل البيانات إلى الحدّ الأدنى، لأنّ معدّل نقل البيانات في الذاكرة هو أحد الأسباب الرئيسية لاستنزاف البطارية في الأجهزة الجوّالة.

عدادات القراءة والكتابة الإجمالية
الشكل 2. عدادات القراءة والكتابة الإجمالية

يمكنك أيضًا فحص عدّادات قراءة ذاكرة الرأس (بايت/ثانية) وقراءة ذاكرة الزخرفة (بايت/ثانية) لتحديد جزء معدل نقل البيانات المستخدَم في بيانات الرأس والزخرفة.

عدّادات قراءة ذاكرة الرؤوس والزخارف
الشكل 3. عدادات قراءة الذاكرة الخاصة بالرؤوس والرسومات

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

توقّف الجلب

اطّلِع على عدّادات % Vertex Fetch Stall و% Texture Fetch Stall و% Stall on System Memory لأنّها ستمنحك بعض المؤشرات على أداء الذاكرة العام لتطبيقك. إذا كانت القيم أعلى من %5 تقريبًا، يشير ذلك إلى أنّ تطبيقك لا يعرض البيانات في الذاكرة بطريقة فعّالة أو لا يصل إلى بياناته بطريقة فعّالة للاستفادة من ذاكرة التخزين المؤقت. راجِع تحليل معدّل نقل بيانات ذاكرة الرأس وتحليل استخدام معدّل نقل بيانات ذاكرة الزخرفة للحصول على تفاصيل حول تحسين استخدام الذاكرة لهذه الأنواع من مواد العرض.

عدادات توقّف الذاكرة
الشكل 4. عدادات توقّف الذاكرة

أجهزة Mali

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

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

إجمالي النتائج الخارجية

بعد تمييز إطار واحد في System Profiler، ابدأ بالاطّلاع على عدّادات Output External Read bytes وOutput External Write bytes. تقدّم هذه العدادات نظرة عامة جيدة على مقدار البيانات التي تعبر ناقل الذاكرة على مدار إطار واحد. حاوِل تقليل مقدار البيانات التي ترسلها عبر ناقل البيانات إلى الحدّ الأدنى، لأنّ معدّل نقل البيانات في الذاكرة هو أحد الأسباب الرئيسية لاستنزاف البطارية في الأجهزة الجوّالة.

مقاييس العداد الخارجي للناتج
الشكل 6. تتبُّع عدّادات الإخراج الخارجية

إدخال الإجماليات الداخلية

تتوفّر أيضًا عدّادات تقدّم لك معلومات حول الذاكرات المؤقتة نفسها. المقاييس التي تهمّك هي "دورات التوقف الداخلي للإدخال [قراءة|كتابة]". تشير القيم الأعلى لهذه المقاييس إلى أنّك تستخدم ذاكرة التخزين المؤقت بنجاح، ولكن يتم إجراء عدد كبير جدًا من طلبات القراءة، ونتيجةً لذلك، يتوقف رمز Shader مؤقتًا في انتظار الوصول إلى الذاكرة.

مقاييس العداد الداخلي للإدخال
الشكل 7. مقاييس عدّاد الإدخال الداخلي

توقّف الجلب

مجموعة العدادات التالية التي يمكنك الاطّلاع عليها هي عدّادات دورات توقّف مسبقًا لعملية جلب البيانات المسبق لرأس المثلث وتوقّف جلب البيانات المسبق للنسيج، إذ ستمنحك هذه العدادات بعض المؤشرات على أداء الذاكرة العام لتطبيقنا. إذا كنت ترى قيمًا أعلى من% 5 تقريبًا، يعني ذلك أنّك لا تنظّم بياناتنا في الذاكرة بطريقة فعّالة أو لا تصل إلى بياناتنا بطريقة فعّالة للاستفادة من ذاكرة التخزين المؤقت. راجِع مقالتَي "تحليل معدّل نقل البيانات في الذاكرة [Vertex|Texture]" للحصول على تفاصيل حول كيفية تحسين استخدام الذاكرة لهذه الأنواع من مواد العرض.

تتبُّع عدّاد أخطاء Fetch Stalls
الشكل 8. عداد حالات توقّف الجلب