Android 8 prend en charge storaged
, un daemon natif Android qui
collecte et publie des métriques de stockage sur les appareils Android.
- Pour les statistiques de disque quotidiennes,
storaged
analyse régulièrement/sys/block/mmcblk0/stat
(périphériques de stockage eMMC) ou/sys/block/sda/stat
(appareils non eMMC). - Pour la durée de vie eMMC,
storaged
analyse/d/mmc0/mmc0:001/ext_csd
(si disponibles). - En ce qui concerne les E/S d'application,
storaged
traverse périodiquement/proc/uid_io/stats
et conserve les données analysées, qui incluent les données de toutes les applications (pas seulement celles en cours d'exécution).dumpsys
peut appelezstoraged
pour consigner l'utilisation des E/S de l'application dans un rapport de bug.
Les informations de Diskstat (y compris les statistiques de disque bloquées) et d'eMMC sont consignées dans la Journal des événements Android, où un service d'enregistrement de la plate-forme collecte les journaux.
Les opérations storaged
sont automatiques et sont entièrement gérées par Android.
vous n'avez donc aucun travail d'implémentation à effectuer. Cette page
décrit la conception de storaged
(y compris les nouvelles interfaces) et son utilisation pour
obtenir l'état des E/S
à partir du noyau.
conception avec stockage
Pour des raisons de traçabilité et de flexibilité des autorisations, storaged
est implémenté en tant que noyau
qui renvoie des informations d'E/S personnalisées (au lieu d'utiliser le code
proc/PID/io
). Pour chaque requête d'E/S, les données d'E/S brutes
stocké et mis à jour dans le noyau task_struct
, et celui-ci conserve
de suivre l'arrêt d'un processus afin de ne pas manquer l'utilisation des E/S qui se produisent à partir du
storaged
dernier événement de sondage.
Le module lit les données brutes et les traite uniquement lorsque le framework lui en informe
d'un commutateur UID de premier plan/arrière-plan ou lorsque le daemon storaged
demande une
. À ce moment-là, le module exporte un nœud de fichier à partir du noyau pour
la communication avec le framework et le daemon storaged
.
storaged
introduit l'interface /proc/uid_io/stats
, qui renvoie
une liste des statistiques d'E/S pour
chaque UID du système. Le format est le suivant:
<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>
- Les octets de lecture/écriture sont des événements d'E/S provenant d'un périphérique de stockage.
- Les caractères de lecture/écriture (également en octets) sont les données demandées par les appels système.
Obtenir l'état des E/S à partir du noyau
Pour vider l'utilisation des E/S à partir du noyau, exécutez la commande storaged
avec
l'option -u
.
Commande : storaged -u
Format de sortie de la commande: name/uid fg_rchar fg_wchar fg_rbytes fg_wbytes
bg_rchar bg_wchar bg_rbytes bg_wbytes fg_fsync bg_fsync
Remarque:Ce résultat est semblable à celui de la console
proc/uid_io/stats
En effet, storaged
traite les données des
/proc/uid_io/stats
et génère ses propres données.
Exemple de résultat :
com.google.android.backuptransport 2269 60 0 0 1719845663 143912573 149065728 184180736 com.android.vending 2170 60 0 0 219904796 38693092 174436352 18944000