Statistiche sull'archiviazione più veloce

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:

  1. Attiva CONFIG_QUOTA, CONFIG_QFMT_V2 e CONFIG_QUOTACTL opzioni kernel.
  2. 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