Android 8 agrega compatibilidad con storaged
, un daemon nativo de Android que
recopila y publica métricas de almacenamiento en dispositivos Android.
- Para las estadísticas diarias del disco,
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 una eMMC,
storaged
analiza/d/mmc0/mmc0:001/ext_csd
(si disponibles). - Para culpar a la E/S de la app,
storaged
se desvía de forma periódica./proc/uid_io/stats
y mantiene los datos analizados, incluidos los datos. de todas las apps (no solo en las que están en ejecución).dumpsys
puede Llama astoraged
para registrar el uso de E/S de la app en un informe de errores.
La información del disco eMMC (incluidas las estadísticas del disco detenido) se registra en Registro de eventos de Android, en el que un servicio de registro de plataforma recopila los registros
Las operaciones storaged
ocurren automáticamente y las controla Android en su totalidad.
por lo que no necesitas realizar ningún trabajo de implementación. Esta página
describe el diseño de storaged
(incluidas las interfaces nuevas) y cómo usarlo para
obtener el estado de E/S del kernel.
diseño almacenado
Para mayor flexibilidad en la contabilidad y los permisos, se implementa storaged
como un kernel.
que devuelve información de E/S por UID (en lugar de usar
proc/PID/io
). Los datos de E/S sin procesar para cada solicitud de E/S seguirán estando
se almacenan y actualizan en el kernel task_struct
, y el kernel mantiene
seguimiento de cuándo finaliza un proceso para no perder el uso de E/S que ocurre desde el
último evento de sondeo storaged
.
El módulo lee datos sin procesar y los procesa solo cuando el framework les notifica
de un interruptor de UID en primer o segundo plano, o cuando el daemon storaged
solicita un
. En ese momento, el módulo exporta un nodo de archivo desde el kernel para
comunicación con framework y daemon storaged
.
storaged
presenta la interfaz /proc/uid_io/stats
, que muestra
una lista de estadísticas de E/S para cada UID en el sistema. El formato es el siguiente:
<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 y escritura son eventos de E/S de un dispositivo de almacenamiento.
- Los caracteres de lectura y escritura (también en bytes) son datos que solicitan las operaciones de lectura y escritura llamadas de sistema.
Cómo obtener el estado de E/S del kernel
Para volcar el uso de E/S del kernel, usa el comando storaged
con
la opción -u
.
Comando: storaged -u
Formato de resultado 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: Este resultado es similar al resultado de
proc/uid_io/stats
Esto se debe a que storaged
procesa datos de
/proc/uid_io/stats
y genera sus propios datos.
Resultado 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