تستخدم الأجهزة التي تعمل بنظام التشغيل Android 12 والإصدارات الأحدث
mm_events
، وهي مجموعة من الإحصاءات المتعلّقة بالذاكرة يتم تسجيلها
بصورة دورية عندما يواجه النظام ضغطًا في الذاكرة. يتم دمج mm_events
مع آليات تتبُّع perfetto
، ولأنّه لا يتم تفعيله إلا
عند رصد الضغط على الذاكرة، فإنّ النفقات الإضافية للأداء تكون ضئيلة. يبدأ جمع
الإحصاءات عند تفعيل آليات kswapd
أو direct reclaim,
أو
compaction
في النواة، ويظل نشطًا لمدّة زمنية
قابلة للضبط
لتسجيل الإحصاءات على فترات زمنية منتظمة.
بدلاً من تقديم نبذة لمرة واحدة عن حالة ذاكرة النظام عند تسجيل تقرير خطأ، يعرض mm_events
عرضًا تاريخيًا موجزًا لإحصاءات الذاكرة خلال فترات ضغط الذاكرة. يتم إدراج الإحصاءات التي تم تسجيلها
في الجداول التالية.
حقول vmstat
nr_free_pages | nr_slab_reclaimable |
nr_slab_unreclaimable | nr_active_file |
nr_inactive_file | nr_active_anon |
nr_inactive_anon | workingset_refault |
workingset_activate | nr_file_pages |
pgpgin | pgpgout |
pswpin | pswpout |
pgsteal_kswapd_dma | pgsteal_kswapd_normal |
pgsteal_kswapd_movable | pgsteal_direct_dma |
pgsteal_direct_normal | pgsteal_direct_movable |
pgscan_kswapd_dma | pgscan_kswapd_normal |
pgscan_kswapd_movable | pgscan_direct_dma |
pgscan_direct_normal | pgscan_direct_movable |
compact_migrate_scanned | compact_free_scanned |
أحداث التتبُّع ذات الصلة بوحدة التحكّم في الحدود
vmscan/mm_vmscan_kswapd_wake | vmscan/mm_vmscan_kswapd_sleep |
vmscan/mm_vmscan_direct_reclaim_begin | vmscan/mm_vmscan_direct_reclaim_end |
compaction/mm_compaction_begin | compaction/mm_compaction_end |
تحليل بيانات mm_events
في حال تفعيل mm_events
، توفّر تقارير الأخطاء للأحداث التي يتم تسجيلها بعد وقت قصير
من بدء الجهاز في مواجهة ضغط ذاكرة مرتفع إحصاءات mm_events
السابقة، في شكل تقرير مضغوط في
FS/data/misc/perfetto-traces/bugreport/systrace.pftrace.
يمكن الاطّلاع على كلّ من بيانات vmstat
وأحداث ftrace
لتحليلها باستخدام واجهة مستخدم Perfetto.
بيانات vmstat
حمِّل ملف systrace.pftrace
إلى واجهة مستخدم Perfetto للاطّلاع على بيانات vmstat
المرسومة على مخطط زمني كما هو موضّح في الشكل 1:
الشكل 1: مخطط زمني للبيانات الرسومية في vmstat
أحداث ftrace
لا يتم عرض mm_events
ftrace
التي تم التقاطها في رسم بياني على المخطط الزمني. لاطلاع على هذه الطلبات، انقر على علامة التبويب طلب SQL، كما هو موضّح في الشكل 2:
الشكل 2: انقر على "طلب بحث (SQL)" للوصول إلى البيانات.
تفعيل mm_events
لتفعيل mm_events، اضبط sys المتعلقة على persist.mm_events.enabled=true
من المورّد
init.rc
.
تم تنفيذ الإجراءات التالية للحدّ من مساحة الذاكرة ووحدة المعالجة المركزية التي يشغلها mm_events:
- يستخدم المثيل
mm-events ftrace
مخزنًا مؤقتًا قدره 4 كيلوبايت لكل وحدة معالجة مركزية (CPU). - يتمّ الحدّ من معدّل تشغيل عامل التشغيل
kmem_activity
إلى مرّة واحدة في الدقيقة. - يمكن أن تكون جلسة تتبُّع
mm-events
واحدة فقط نشطة في أي وقت.
التخصيص
يستخدم mm_events
ملف إعدادات تتبُّع perfetto
لتحديد الإحصاءات التي سيتم تسجيلها
أثناء جلسة التتبُّع.
يمكنك تقديم إعدادات تتبُّع مخصّصة لخدمة Perfetto في /vendor/etc/mm_events.cfg
.
للحصول على وصف لحقول إعدادات التتبُّع المتاحة، يُرجى الاطّلاع على Perfetto
Docs.
للحصول على نموذج لإعداد التتبّع، اطّلِع على
mm_events.cfg
هذا المثال.
في المقتطف، تظهر الحقول المهمة التي يجب تضمينها في إعدادات التتبّع لضمان بدء التتبّع بسبب الضغط على الذاكرة:
# Ensures only 1 tracing session with this key can be active
unique_session_name: "perfetto_mm_events_session"
# If a trace with bugreport_score > 0 is running,
# the captured data is made available in the zipped bugreport
# at FS/data/misc/perfetto-traces/bugreport/systrace.pftrace
bugreport_score: 100
trigger_config {
trigger_mode: START_TRACING
trigger_timeout_ms: 3600000 # 1 hour
triggers {
# kmem_activity trigger gets activated when memory pressure
# is detected
name: "kmem_activity"
stop_delay_ms: 360000 # 6 mins
}
}
في هذه الإعدادات، تبدأ mm_events
المشغِّل kmem_activity
وتبدأ جلسة تتبُّع Perfetto في تسجيل أحداث الذاكرة التي تبلغ vm_stats
وftrace
حتى نهاية فترة stop_delay_ms
التي تم ضبطها، أي 36, 000 ملي ثانية (6 دقائق).
يتم ضبط مهلة التفعيل على قيمة كبيرة (ساعة واحدة في هذه الحالة) ويتم إعادة تنشيط mm_events config
بشكل دوري لضمان تفعيل mm_events
دائمًا. نتيجةً لذلك، يتم إنشاء تقرير أخطاء يحتوي على نوع البيانات المعروضة في الشكل 1
والشكل 2.