Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Eventos MM - Estadísticas de memoria histórica

Los dispositivos que lanzamiento en Android 12 y superior utilizan mm_events , un conjunto de estadísticas de la memoria relacionada con la que son capturados periódicamente mientras una presión del sistema de memoria experiencias. mm_events está integrado con perfetto mecanismos de localización, y porque se activa sólo cuando se detecta la presión de memoria, su rendimiento añadido de arriba es mínima. La colección se inicia cuando las estadísticas del núcleo kswapd , direct reclaim, o compaction se activan los mecanismos, y se mantiene activo durante un periodo de tiempo configurable a las estadísticas de captura a intervalos regulares.

En lugar de proporcionar una instantánea de una sola vez del estado de la memoria del sistema cuando se presenta un informe de error, mm_events muestra una breve visión histórica de las estadísticas de memoria durante los períodos de presión de memoria. Las estadísticas capturadas se enumeran en las siguientes tablas.

campos 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

eventos de seguimiento relacionados con 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

Analizando datos de mm_events

Si mm_events está habilitada, los informes de errores para los eventos que son capturados poco después un dispositivo comienza a experimentar presión de memoria alta proporcionar los históricos mm_events las estadísticas, en la forma de un informe con cremallera en FS/data/misc/perfetto-traces/bugreport/systrace.pftrace.

Tanto los vmstat datos y ftrace eventos se pueden ver para el análisis utilizando la Perfetto interfaz de usuario .

datos vmstat

Sube el systrace.pftrace archivo a Perfetto interfaz de usuario para ver las vmstat datos graficados en una línea de tiempo como se muestra a continuación.

vmstat data graphed on a timeline

Figura 1. Cronología de vmstat datos gráficos

ftrace eventos

Los capturados ftrace mm_events no se muestran gráficamente en la línea de tiempo. Para verlas, haga clic en la pestaña de consultas SQL, que se encuentra como se muestra en la Figura 2.

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

Figura 2. Haga clic en Consulta (SQL) para acceder

Habilitando mm_events

Para habilitar mm_events, juego sysprop persist.mm_events.enabled=true del proveedor init.rc .

Lo siguiente está en su lugar para mitigar la memoria y la huella de CPU de mm_events:

  • Una mm-events ftrace ejemplo utiliza un búfer 4 KB por CPU.
  • El kmem_activity gatillo es la tasa limitado a una vez por minuto.
  • Sólo 1 mm-events sesión de seguimiento puede estar activo en cualquier momento.

Personalización

mm_events utiliza un perfetto archivo de rastreo de configuración para especificar qué las estadísticas de captura durante la sesión de seguimiento.

Puede proporcionar una configuración personalizada en rastro Perfetto /vendor/etc/mm_events.cfg . Para una descripción de los campos de seguimiento de configuración disponibles, consulte los Documentos Perfetto . Para una configuración de traza de ejemplo, ver este mm_events.cfg ejemplo.

Los campos importantes para incluir en su configuración de seguimiento para asegurarse de que se active por la presión de la memoria se muestran en el fragmento a continuación.

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

En esta configuración mm_events inicia la perfetto kmem_activity gatillo y la sesión de seguimiento Perfetto comienza la captura de vm_stats y ftrace eventos de memoria hasta el final de la configurada stop_delay_ms período, 36000 ms (6 minutos). El tiempo de espera de disparo se establece en un valor grande (en este caso, 1 hora) y mm_events config se rearmado periódicamente para asegurar que mm_events está siempre habilitada. Un informe de error se genera como resultado, que contiene el tipo de datos que se muestran en la Figura 1 y la Figura 2 .