Statistiques de stockage plus rapides

Dans les versions antérieures d'Android, le système balayait tous les fichiers appartenant à un une application spécifique pour mesurer l'utilisation du disque. Cette mesure manuelle peut prendre quelques minutes à calculer avant de présenter les résultats aux utilisateurs dans les paramètres.

De plus, l'algorithme interne pour effacer les fichiers de données mis en cache n'a examiné dans toutes les applications. Cela a permis à des applications malveillantes de dégrader l'expérience utilisateur globale en définissant des heures de modification éloignées dans le futur sur se privilégier par rapport aux autres applications.

Pour améliorer ces expériences, Android 8.0 propose d'utiliser le système de fichiers ext4 "quota" la prise en charge de renvoyer des statistiques d'utilisation du disque presque instantanément. Ce quota améliore également la stabilité du système en empêchant une application donnée d'utiliser plus de 90% de l'espace disque ou 50% des inodes.

Implémentation

La fonctionnalité de quota fait partie de l'implémentation par défaut de installd. installd utilise automatiquement la fonctionnalité de quota lorsqu'elle est activée sur un un système de fichiers particulier. Le système reprend automatiquement et de manière transparente. calcul manuel lorsque la fonctionnalité de quota n'est pas activée ou n'est pas prise en charge appareil de stockage en mode bloc mesuré.

Pour activer la prise en charge des quotas sur un appareil de stockage en mode bloc particulier:

  1. Activer les CONFIG_QUOTA, CONFIG_QFMT_V2 et Options de noyau CONFIG_QUOTACTL.
  2. Ajouter l'option quota à votre partition de données utilisateur dans votre fichier fstab :
    /dev/block/platform/soc/624000.ufshc/by-name/userdata   /data
    ext4    noatime,nosuid,nodev,barrier=1,noauto_da_alloc
    latemount,wait,check,formattable,fileencryption=ice,quota

L'option fstab peut être activée ou désactivée en toute sécurité sur appareils. Lors du premier démarrage suivant la modification de l'option fstab, fsmgr force une passe fsck pour mettre à jour toutes les données de quota. ce qui peut ralentir le premier démarrage. Suivant ne seront pas affectées.

La prise en charge des quotas n'a été testée que sur ext4 et Linux 3.18 ou version ultérieure. Si l'activation sur d'autres systèmes de fichiers ou sur des versions de noyau plus anciennes, les fabricants de périphériques responsable du test et de la vérification de l'exactitude des statistiques.

Aucune assistance matérielle spéciale n'est requise.

Validation

Il existe des tests CTS sous StorageHostTest, qui sont publics API permettant de mesurer l'utilisation du disque Ces API sont censées renvoyer des valeurs correctes que la prise en charge des quotas soit activée ou désactivée.

Débogage

L'application de test alloue soigneusement des régions d'espace disque à l'aide de nombres premiers uniques pour la taille. Lors du débogage de ces tests, utilisez-le pour déterminer la cause d'écarts. Par exemple, si un test échoue avec un écart de 11 Mo, examinez le Utils.useSpace() pour vérifier que le blob de 11 Mo a été stocké dans getExternalCacheDir()

Certains tests internes peuvent également être utiles pour le débogage, mais ils peut nécessiter la désactivation des contrôles de sécurité pour réussir:

runtest -x frameworks/base/services/tests/servicestests/ \
  src/com/android/server/pm/InstallerTest.java
adb shell /data/nativetest64/installd_utils_test/installd_utils_test
adb shell /data/nativetest64/installd_cache_test/installd_cache_test
adb shell /data/nativetest64/installd_service_test/installd_service_test