Nelle versioni precedenti di Android, il sistema attraversava tutti i file di proprietà di un un'app specifica per misurare l'utilizzo del disco. Questa misurazione manuale potrebbe richiedere alcuni minuti per il calcolo prima di mostrare i risultati agli utenti nelle Impostazioni.
Inoltre, l'algoritmo interno per cancellare i file di dati memorizzati nella cache ha esaminato solo data e ora modificate in tutte le app. Questo ha consentito ad app dannose di ridurre la qualità esperienza utente complessiva impostando orari modificati lontani nel futuro in modo da hanno la precedenza su altre app.
Per migliorare queste esperienze, Android 8.0 offre di sfruttare il file system ext4 "quota" per restituire statistiche sull'utilizzo del disco quasi istantaneamente. Questa quota migliora anche la stabilità del sistema, impedendo a una singola app di utilizzare oltre il 90% dello spazio su disco o il 50% degli inode.
Implementazione
La funzionalità della quota fa parte dell'implementazione predefinita di installd
.
installd
utilizza automaticamente la funzionalità delle quote quando è abilitata su un
un particolare file system. Il sistema riprende automaticamente e in modo trasparente
il calcolo manuale quando la funzionalità della quota non è abilitata o supportata
dispositivo a blocchi che viene misurato.
Per attivare il supporto delle quote su un determinato dispositivo a blocchi:
- Attiva
CONFIG_QUOTA
,CONFIG_QFMT_V2
eCONFIG_QUOTACTL
opzioni kernel. - Aggiungi l'opzione
quota
alla partizione dei dati utente nel file fstab file:/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'opzione fstab
può essere attivata o disattivata in tutta sicurezza su applicazioni
dispositivi mobili. Durante il primo avvio, dopo la modifica dell'opzione fstab
,
fsmgr
forza un pass fsck
per aggiornare tutti i dati della quota
strutturali, il che potrebbe comportare un leggero tempo di caricamento del primo avvio. Successiva
gli stivali non saranno interessati.
Il supporto delle quote è stato testato solo su ext4 e Linux 3.18 o versioni successive. Se attivi l'opzione su altri file system o su versioni meno recenti del kernel, i produttori di dispositivi responsabile di eseguire test e verificare la correttezza delle statistiche.
Non è richiesto alcun supporto hardware speciale.
Convalida
Esistono test CTS in StorageHostTest
, che si esercitano pubblicamente
API per la misurazione dell'utilizzo del disco. Queste API dovrebbero restituire valori corretti
indipendentemente dall'attivazione o disattivazione
del supporto delle quote.
Debug…
L'app di test assegna con attenzione le regioni dello spazio su disco utilizzando numeri primi univoci
per le dimensioni. Durante il debug di questi test, utilizza questa informazione per determinare la causa di eventuali
discrepanze. Ad esempio, se un test non va a buon fine con un delta di 11 MB, esamina la
Utils.useSpace()
per verificare che il blob da 11 MB sia stato archiviato
getExternalCacheDir()
.
Esistono anche alcuni test interni che possono essere utili per il debug, ma potrebbe richiedere la disattivazione dei controlli di sicurezza per superare:
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