Android O agrega compatibilidad con storaged
, un demonio nativo de Android que recopila y publica métricas de almacenamiento en dispositivos Android.
- Para diskstats diarios,
storaged
analiza periódicamente/sys/block/mmcblk0/stat
(dispositivos de almacenamiento eMMC) o/sys/block/sda/stat
(dispositivos que no son eMMC). - Para la vida útil de eMMC, análisis almacenados /d/
storaged
/d/mmc0/mmc0:001/ext_csd
(si está disponible). - Para culpar a la E/S de la aplicación, el almacenamiento atraviesa periódicamente
/proc/uid_io/stats
storaged
mantiene los datos analizados, que incluyen datos de todas las aplicaciones (no solo las aplicaciones en ejecución).dumpsys
puede llamar astoraged
para registrar el uso de E/S de la aplicación en un informe de errores.
La información de Diskstat (incluidos los diskstats bloqueados) y eMMC se registra en el registro de eventos de Android, donde un servicio de registro de plataforma recopila los registros.
storaged
ocurren automáticamente y son manejadas completamente por el marco de trabajo 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 la contabilidad y la flexibilidad de permisos, storaged
se implementa como un módulo de kernel que devuelve información de E/S por UID (en lugar de usar proc/PID/io
estándar). Los datos de E/S sin procesar para cada solicitud de E/S continúan almacenándose y actualizándose en kernel task_struct
, y el kernel realiza un seguimiento de cuándo finaliza un proceso para que no se pierda el uso de E/S que ocurre desde el último storaged
de sondeo almacenado.
El módulo lee datos sin procesar y los procesa solo cuando el marco le notifica 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 núcleo 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