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:
- Activer les
CONFIG_QUOTA
,CONFIG_QFMT_V2
et Options de noyauCONFIG_QUOTACTL
. - 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