أحداث MM إحصائيات الذاكرة التاريخية

تستخدم الأجهزة التي تعمل بنظام التشغيل Android 12 والإصدارات الأحدث mm_events ، وهي مجموعة من الإحصائيات المتعلقة بالذاكرة والتي يتم التقاطها بشكل دوري أثناء تعرض النظام لضغط الذاكرة. تم دمج mm_events مع آليات تتبع perfetto ، ونظرًا لأنه يتم تنشيطه فقط عند اكتشاف ضغط الذاكرة، فإن الحمل الإضافي للأداء الخاص به يكون في حده الأدنى. تبدأ عملية جمع الإحصائيات عندما يتم تنشيط آليات kswapd أو direct reclaim, أو compaction بالنواة، وتظل نشطة لفترة زمنية قابلة للتكوين لالتقاط الإحصائيات على فترات منتظمة.

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

حقول فمستات

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 .

بيانات فمستات

قم بتحميل ملف systrace.pftrace إلى Perfetto UI لرؤية بيانات vmstat المرسومة بيانيًا على مخطط زمني كما هو موضح في الشكل 1:

vmstat data graphed on a timeline

الشكل 1. الجدول الزمني للبيانات الرسومية vmstat.

أحداث ftrace

لا يتم عرض mm_events ftrace الملتقطة بيانياً على المخطط الزمني. لعرضها، انقر فوق علامة التبويب استعلام SQL ، الموجودة كما هو موضح في الشكل 2:

Locate the Query SQL tab and click to view ftrace and mm_events captured and graphed

الشكل 2. انقر فوق الاستعلام (SQL) للوصول.

تمكين mm_events

لتمكين mm_events، قم بتعيين sysprop persist.mm_events.enabled=true من البائع init.rc .

تم وضع ما يلي للتخفيف من أثر الذاكرة ووحدة المعالجة المركزية لـ mm_events:

  • يستخدم مثيل mm-events ftrace مخزنًا مؤقتًا بسعة 4 كيلو بايت لكل وحدة معالجة مركزية.
  • يقتصر معدل تشغيل 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 مشغل perfetto kmem_activity وتبدأ جلسة تتبع Perfetto في التقاط أحداث ذاكرة vm_stats و ftrace حتى نهاية فترة stop_delay_ms التي تم تكوينها، 36000 مللي ثانية (6 دقائق). يتم تعيين مهلة التشغيل على قيمة كبيرة (ساعة واحدة في هذه الحالة) ويتم إعادة تشغيل mm_events config بشكل دوري لضمان تمكين mm_events دائمًا. ونتيجة لذلك، يتم إنشاء تقرير خطأ، يحتوي على نوع البيانات الموضحة في الشكل 1 والشكل 2 .