Google 致力于为黑人社区推动种族平等。查看具体举措
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Statistiche di archiviazione più veloci

Nelle versioni precedenti di Android, il sistema attraversava tutti i file di proprietà di una particolare app per misurare l'utilizzo del disco. Il calcolo di questa misurazione manuale potrebbe richiedere alcuni minuti prima di mostrare i risultati agli utenti in Impostazioni.

Inoltre, l'algoritmo interno per cancellare i file di dati memorizzati nella cache ha esaminato solo l'ora modificata in tutte le app. Ciò ha consentito alle app dannose di degradare l'esperienza utente complessiva impostando tempi di modifica molto lontani nel futuro per favorirsi ingiustamente rispetto ad altre app.

Per migliorare queste esperienze, Android 8.0 offre di sfruttare il supporto "quota" del file system ext4 per restituire le statistiche sull'utilizzo del disco quasi istantaneamente. Questa funzione di quota migliora anche la stabilità del sistema impedendo a qualsiasi singola app di utilizzare più del 90% dello spazio su disco o il 50% degli inode.

Implementazione

La funzione quota fa parte dell'implementazione predefinita di installd . installd usa automaticamente la funzione quota quando abilitata su un particolare filesystem. Il sistema riprende automaticamente e in modo trasparente il calcolo manuale quando la funzione di quota non è abilitata o supportata sul dispositivo a blocchi da misurare.

Per abilitare il supporto delle quote su un particolare dispositivo a blocchi:

  1. Abilita le opzioni del kernel CONFIG_QUOTA , CONFIG_QFMT_V2 e CONFIG_QUOTACTL .
  2. Aggiungi l'opzione quota alla partizione userdata nel file 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'opzione fstab può essere abilitata o disabilitata in modo sicuro sui dispositivi esistenti. Durante il primo avvio dopo aver modificato l'opzione fstab , fsmgr forza un passaggio fsck per aggiornare tutte le strutture dei dati di quota, il che potrebbe far sì che il primo avvio richieda leggermente più tempo. Gli avviamenti successivi non saranno interessati.

Il supporto delle quote è stato testato solo su ext4 e Linux 3.18 o versioni successive. Se si abilita su altri filesystem o su versioni del kernel precedenti, i produttori di dispositivi sono responsabili del test e del controllo della correttezza delle statistiche.

Non è richiesto alcun supporto hardware speciale.

Validazione

Ci sono test CTS in StorageHostTest , che esercitano API pubbliche per misurare l'utilizzo del disco. Queste API dovrebbero restituire valori corretti indipendentemente dal supporto della quota abilitato o disabilitato.

Debug

L'app di test alloca attentamente le regioni di spazio su disco utilizzando numeri primi univoci per la dimensione. Quando si esegue il debug di questi test, utilizzarlo per determinare la causa di eventuali discrepanze. Ad esempio, se un test ha esito negativo con un delta di 11 MB, esaminare il metodo Utils.useSpace() per vedere che il getExternalCacheDir() 11 MB è stato archiviato in getExternalCacheDir() .

Esistono anche alcuni test interni che possono essere utili per il debug, ma potrebbero richiedere la disabilitazione dei controlli di sicurezza per essere superati:

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