Android O agrega soporte para storaged
, un demonio nativo de Android que recopila y publica métricas de almacenamiento en dispositivos Android.
- Para diskstats diarias,
storaged
periódicamente análisis sintácticos/sys/block/mmcblk0/stat
(dispositivos de almacenamiento eMMC) o/sys/block/sda/stat
(dispositivos no eMMC). - Para eMMC vida,
storaged
análisis sintácticos/d/mmc0/mmc0:001/ext_csd
(si está disponible). - Para culpar a las E / S de las aplicaciones,
storaged
periódicamente atraviesa/proc/uid_io/stats
y mantiene los datos analizados, que incluyen datos de todas las aplicaciones (no solo las aplicaciones en ejecución).dumpsys
puede llamarstoraged
para registrar el uso de las aplicaciones de E / S en un informe de error.
Diskstat (incluidas las estadísticas de disco estancadas) y la información de eMMC se registra en el registro de eventos de Android, donde un servicio de registro de la plataforma recopila los registros.
storaged
operaciones storaged
ocurren automáticamente y son manejadas completamente por el marco de Android, por lo que no necesita realizar ningún trabajo de implementación. Esta página describe el diseño de storaged
(incluidas las nuevas interfaces) y cómo usarlo para obtener el estado de E / S del kernel.
diseño almacenado
Para flexibilidad de contabilidad y permisos, storaged
se implementa como un módulo del kernel que devuelve información de E / S per-uid (en lugar de utilizar proc/PID/io
estándar). Los datos de E / S sin procesar para cada solicitud de E / S continúan task_struct
y actualizándose en el kernel task_struct
, y el kernel realiza un seguimiento de cuándo sale un proceso para no perder el uso de E / S que se produce desde el último evento de sondeo storaged
.
El módulo lee datos sin procesar y los procesa solo cuando el marco le notifica de un cambio de primer plano / fondo de uid o cuando el demonio storaged
solicita un informe. En ese momento, el módulo exporta un nodo de archivo del kernel para la comunicación con el marco y el demonio storaged
.
storaged
presenta la interfaz /proc/uid_io/stats
, que devuelve una lista de estadísticas de E / S para cada UID del sistema. El formato es:
<uid>: <foreground read bytes> <foreground write bytes> <foreground read chars> <foreground write chars> <background read bytes> <background write bytes> <background read chars> <background write chars>
- Los bytes de lectura / escritura son eventos de E / S de un dispositivo de almacenamiento.
- Los caracteres de lectura / escritura (también en bytes) son datos solicitados por llamadas al sistema de lectura / escritura.
Obtener el estado de E / S del kernel
Para volcar el uso de E / S del kernel, use el comando storaged
con la opción -u
.
Comando: storaged -u
Formato de salida del comando: name/uid fg_rchar fg_wchar fg_rbytes fg_wbytes bg_rchar bg_wchar bg_rbytes bg_wbytes fg_fsync bg_fsync
Nota: Esta salida es similar a la salida de proc/uid_io/stats
. Esto se debe a que storaged
procesa datos de /proc/uid_io/stats
y genera sus propios datos.
Salida de ejemplo:
com.google.android.backuptransport 2269 60 0 0 1719845663 143912573 149065728 184180736 com.android.vending 2170 60 0 0 219904796 38693092 174436352 18944000