Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Estadísticas de almacenamiento más rápidas

En versiones anteriores de Android, el sistema atravesaba todos los archivos propiedad de una aplicación en particular para medir el uso del disco. Esta medición manual puede tardar unos minutos en calcularse antes de mostrar los resultados a los usuarios en Configuración.

Además, el algoritmo interno para borrar los archivos de datos en caché solo miró el tiempo modificado en todas las aplicaciones. Esto permitió que las aplicaciones maliciosas degraden la experiencia general del usuario al establecer tiempos modificados en el futuro para favorecerse injustamente sobre otras aplicaciones.

Para mejorar estas experiencias, Android 8.0 ofrece aprovechar el soporte de "cuotas" del sistema de archivos ext4 para devolver las estadísticas de uso del disco casi instantáneamente. Esta función de cuota también mejora la estabilidad del sistema al evitar que una sola aplicación utilice más del 90% del espacio en disco o el 50% de los inodos.

Implementación

La función de cuota es parte de la implementación predeterminada de installd . installd utiliza automáticamente la función de cuota cuando está habilitada en un sistema de archivos en particular. El sistema reanuda el cálculo manual de forma automática y transparente cuando la función de cuota no está habilitada o no es compatible con el dispositivo de bloque que se está midiendo.

Para habilitar la compatibilidad con cuotas en un dispositivo de bloque en particular:

  1. Habilite las opciones del kernel CONFIG_QUOTA , CONFIG_QFMT_V2 y CONFIG_QUOTACTL .
  2. Agregue la opción de quota a su partición de datos de usuario en su archivo 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

La opción fstab se puede activar o desactivar de forma segura en los dispositivos existentes. Durante el primer arranque después de cambiar la opción fstab , fsmgr fuerza un pase fsck para actualizar todas las estructuras de datos de cuotas, lo que puede hacer que el primer arranque tarde un poco más. Las botas posteriores no se verán afectadas.

La compatibilidad con cuotas solo se ha probado en ext4 y Linux 3.18 o superior. Si se habilita en otros sistemas de archivos, o en versiones anteriores del kernel, los fabricantes de dispositivos son responsables de probar y verificar la exactitud de las estadísticas.

No se requiere soporte de hardware especial.

Validación

Hay pruebas CTS en StorageHostTest , que ejercen API públicas para medir el uso del disco. Se espera que estas API devuelvan valores correctos independientemente de que la compatibilidad con cuotas esté habilitada o deshabilitada.

Depuración

La aplicación de prueba asigna cuidadosamente las regiones de espacio en disco utilizando números primos únicos para el tamaño. Al depurar estas pruebas, utilícelo para determinar la causa de las discrepancias. Por ejemplo, si una prueba falla con un delta de 11 MB, examine el método Utils.useSpace() para ver que el blob de 11 MB se almacenó en getExternalCacheDir() .

También hay algunas pruebas internas que pueden ser útiles para la depuración, pero es posible que requieran deshabilitar las comprobaciones de seguridad para pasar:

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