MM Olayları - Geçmiş Bellek İstatistikleri

Daha yüksek yararlanmak Android 12 fırlatma ve Aygıtlar mm_events periyodik iken bir sistem deneyimleri bellek basıncını tutuklanabilirim bellek ilgili istatistik kümesi. mm_events ile entegre edilmiştir perfetto izleme mekanizmalarının ve bellek baskısı tespit edildiğinde devreye çünkü, onun katma performans ek yükü azdır. Çekirdeğin zaman istatistik toplama başlar kswapd , direct reclaim, ya da compaction mekanizmaları devreye almak ve bir aktif kalır zaman yapılandırılabilir döneminde düzenli aralıklarla yakalama istatistiklerine.

Bunun yerine bir hata raporu yayımlandı sistem belleği devletin bir kerelik anlık sağlama, mm_events gösterileri bellek baskısı dönemlerinde hafıza istatistiklerinin kısa bir tarihsel görünümü. Yakalanan istatistikler aşağıdaki tablolarda listelenmiştir.

vmstat alanları

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 ile ilgili iz olayları

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 verilerini analiz etme

Eğer mm_events etkinleştirildiğinde, bir cihazın kısa bir süre sonra yakalanan olsun olaylar için hata raporları yüksek bellek baskısı tarihsel sağlamak yaşamaya başlar mm_events içinde sıkıştırılmış rapor halinde, istatistikler FS/data/misc/perfetto-traces/bugreport/systrace.pftrace.

Hem vmstat verileri ve ftrace olayları kullanarak analiz için izlenebilir Perfetto UI .

vmstat verileri

Yükle systrace.pftrace görmek Perfetto UI dosyayı vmstat aşağıda gösterildiği gibi bir zaman çizelgesi üzerinde grafikle verileri.

vmstat data graphed on a timeline

Grafik verilerinin vmstat Şekil 1. Zaman Çizelgesi

ftrace olayları

Yakalanan ftrace mm_events çizelgesinde grafiksel gösterilmemiştir. Bunları görüntülemek için Şekil 2'de görüldüğü gibi bulunan Sorgu SQL sekmesini tıklayın.

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

Şekil erişim Sorgusu (SQL) tıklayın 2.

mm_events'i etkinleştirme

Mm_events etkinleştirmek için ayarlanan sysprop persist.mm_events.enabled=true satıcı dan init.rc .

mm_events'in bellek ve CPU ayak izini azaltmak için aşağıdakiler mevcuttur:

  • Bir mm-events ftrace örneği CPU başına 4 KB tampon kullanır.
  • kmem_activity tetik oranı sınırlı dakikada bir kez etmektir.
  • Sadece 1 mm-events iz oturumu herhangi bir zamanda etkin olabilir.

özelleştirme

mm_events bir kullanan perfetto izleme oturumu sırasında yakalanmasını istatistik belirtmek için iz yapılandırma dosyası.

Sen bir özel Perfetto iz yapılandırma sağlayabilir /vendor/etc/mm_events.cfg . Mevcut iz yapılandırma alanların açıklaması için, bkz Perfetto Dokümanlar . Bir örnek izleme düzenleme için, bu bkz mm_events.cfg örneği.

Bellek baskısı tarafından tetiklenmesini sağlamak için izleme yapılandırmanıza dahil edilecek önemli alanlar aşağıdaki snippet'te gösterilmektedir.

# 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
  }
}

Bu konfigürasyon içinde mm_events inisiye perfetto kmem_activity tetikleme ve Perfetto iz kalma kaydetmeye başlar vm_stats ve ftrace yapılandırılmış sonuna kadar bellek olayları stop_delay_ms süre, 36000 ms (6 dakika). Tetik zaman aşımı, büyük bir değere (bu durumda, 1 saat) ayarlanır ve mm_events config periyodik sağlamak için tekrar devreye girer mm_events her zaman etkindir. Bir hata raporu gösterilen verilerin türü ihtiva eden bir sonucu olarak üretilen alır Şekil 1 ve Şekil 2'de .