Schnellere Speicherstatistiken

In früheren Android-Versionen durchlief das System alle Dateien eines um die Laufwerksnutzung zu messen. Diese manuelle Messung kann einige Minuten dauern bevor die Ergebnisse für Nutzer in den Einstellungen angezeigt werden.

Außerdem sah sich der interne Algorithmus zum Löschen von im Cache gespeicherten Datendateien nur Änderungszeit für alle Apps. Dadurch konnten schädliche Apps den Nutzerfreundlichkeit insgesamt erhöht, indem Zeiträume, die weit in der Zukunft geändert werden, auf unfaire gegenüber anderen Apps bevorzugen.

Um diese Funktionen zu verbessern, bietet Android 8.0 an, die ext4-Dateisysteme "Kontingent" Unterstützung, um Datenträgernutzungsstatistiken beinahe augenblicklich zurückzugeben. Dieses Kontingent verbessert auch die Systemstabilität, indem verhindert wird, dass eine einzelne App mehr als 90% des Festplattenspeichers oder 50% der Inodes.

Implementierung

Das Kontingentfeature ist Teil der Standardimplementierung von installd. installd verwendet die Kontingentfunktion automatisch, wenn sie für eine bestimmte Dateisystem. Das System fährt automatisch und transparent Manuelle Berechnung, wenn die Kontingentfunktion auf der das Gerät, das gemessen wird, blockieren.

So aktivieren Sie die Kontingentunterstützung auf einem bestimmten Blockgerät:

  1. Aktivieren Sie CONFIG_QUOTA, CONFIG_QFMT_V2 und CONFIG_QUOTACTL-Kernel-Optionen.
  2. Option quota zur Nutzerdatenpartition in fstab hinzufügen Datei:
    /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

Die Option fstab kann für vorhandene Geräte ohne Probleme aktiviert oder deaktiviert werden. Geräte. Beim ersten Startvorgang nach Änderung der Option fstab fsmgr erzwingt einen fsck-Durchlauf, um alle Kontingentdaten zu aktualisieren was dazu führen kann, dass der erste Start etwas länger dauert. Im Anschluss ist beim Stiefel nicht betroffen.

Die Kontingentunterstützung wurde erst unter ext4 und Linux 3.18 oder höher getestet. Wenn Sie auf anderen Dateisystemen oder älteren Kernel-Versionen für Tests und die Überprüfung der Richtigkeit der Statistiken verantwortlich.

Es ist kein spezieller Hardware-Support erforderlich.

Zertifizierungsstufe

Es gibt CTS-Tests unter StorageHostTest, die öffentlich sind APIs zum Messen der Laufwerksnutzung Von diesen APIs wird erwartet, dass sie korrekte Werte zurückgeben. unabhängig davon, ob die Kontingentunterstützung aktiviert oder deaktiviert ist.

Fehlerbehebung

Die Test-App weist sorgfältig mithilfe von eindeutigen Primzahlen Speicherplatzregionen zu. für die Größe. Verwenden Sie dieses Feld bei der Fehlerbehebung in diesen Tests, um die Ursache Abweichungen. Wenn beispielsweise ein Test mit einem Delta von 11 MB fehlschlägt, überprüfen Sie die Utils.useSpace()-Methode, um festzustellen, ob das 11-MB-Blob gespeichert wurde getExternalCacheDir().

Es gibt auch einige interne Tests, die für die Fehlerbehebung nützlich sein könnten, kann die Deaktivierung von Sicherheitsprüfungen erforderlich machen, um zu bestehen:

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