Android 8 est compatible avec storaged
, un démon natif Android qui collecte et publie des métriques de stockage sur les appareils Android.
- Pour les statistiques quotidiennes sur les disques,
storaged
analyse périodiquement/sys/block/mmcblk0/stat
(appareils de stockage eMMC) ou/sys/block/sda/stat
(appareils autres que eMMC). - Pour la durée de vie de l'eMMC,
storaged
analyse/d/mmc0/mmc0:001/ext_csd
(si disponible). - Pour l'attribution de la responsabilité des E/S de l'application,
storaged
parcourt régulièrement/proc/uid_io/stats
et gère les données analysées, y compris celles de toutes les applications (et pas seulement celles en cours d'exécution).dumpsys
peut appelerstoraged
pour consigner l'utilisation des E/S de l'application dans un rapport de bug.
Les informations Diskstat (y compris les diskstats bloqués) et eMMC sont consignées dans le journal des événements Android, où un service de check-in de la plate-forme collecte les journaux.
Les opérations storaged
se produisent automatiquement et sont entièrement gérées par le framework Android. Vous n'avez donc pas besoin d'effectuer d'implémentation. Cette page décrit la conception de storaged
(y compris les nouvelles interfaces) et comment l'utiliser pour obtenir l'état des E/S à partir du noyau.
conception stockée
Pour plus de flexibilité en termes de comptabilité et d'autorisations, storaged
est implémenté en tant que module de kernel qui renvoie des informations d'E/S par uid (au lieu d'utiliser proc/PID/io
standard). Les données d'E/S brutes pour chaque requête d'E/S continuent d'être stockées et mises à jour dans le kernel task_struct
, et le kernel suit la date de sortie d'un processus afin de ne pas manquer l'utilisation des E/S qui se produit à partir du dernier événement de sondage storaged
.
Le module lit les données brutes et ne les traite que lorsque le framework l'informe d'un changement de premier plan/arrière-plan d'un uid ou lorsque le daemon storaged
demande un rapport. À 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 de 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 appareil de stockage.
- Les caractères de lecture/écriture (également en octets) sont des données demandées par les appels système de lecture/écriture.
Obtenir l'état des E/S à partir du noyau
Pour vider l'utilisation des E/S 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 proc/uid_io/stats
. En effet, storaged
traite les données de /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