دستگاههایی که با 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 |
رویدادهای ردیابی مرتبط با mm
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
را بهصورت نموداری در خط زمان همانطور که در «شکل ۱» نشان داده شده است ببینید:
شکل ۱. خط زمان دادههای گرافیکی vmstat.
رویدادهای ftrace
ftrace mm_events ضبطشده بهصورت گرافیکی در خط زمان نشان داده نمیشود. برای
مشاهده آنها، روی برگه پرسش SQL که در شکل ۲ نشان داده شده است کلیک کنید:
شکل ۲. برای دسترسی، روی «پُرسمان (SQL)» کلیک کنید.
فعال کردن mm_events
برای فعال کردن mm_events، sysprop persist.mm_events.enabled=true را از فروشنده
init.rc تنظیم کنید.
موارد زیر برای کاهش ردپای حافظه و واحد پردازش مرکزی mm_events درنظر گرفته شده است:
- نمونه
mm-events ftraceاز بافر ۴ کیلوبایتی برای هر CPU استفاده میکند. - محرک
kmem_activityبه یک بار در دقیقه محدود شده است. - هربار فقط ۱ جلسه ردیابی
mm-eventsمیتواند فعال باشد.
سفارشیسازی
mm_events از فایل پیکربندی ردیابی perfetto برای مشخص کردن آماری که باید درطول جلسه ردیابی ثبت شود استفاده میکند.
میتوانید پیکربندی ردیابی Perfetto سفارشی در /vendor/etc/mm_events.cfg ارائه دهید.
برای شرح فیلدهای پیکربندی ردیابی دردسترس، مستندات Perfetto را ببینید.
برای پیکربندی ردیابی نمونه، این
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، یعنی ۳۶۰۰۰ میلیثانیه (۶ دقیقه)، به پایان برسد.
زمان اتمام راهانداز روی مقدار بزرگی تنظیم شده است (در این مورد، ۱ ساعت) و
mm_events config
بهطور دورهای دوباره مسلح میشود تا اطمینان حاصل شود که mm_events همیشه فعال است. گزارش اشکالی درنتیجه تولید میشود که حاوی نوع دادههای نشاندادهشده در شکل ۱
و شکل ۲ است.