Statistik penyimpanan yang lebih cepat

Di versi Android sebelumnya, sistem menjelajahi semua file yang dimiliki oleh aplikasi tertentu untuk mengukur penggunaan {i>disk<i}. Pengukuran manual ini memerlukan waktu beberapa menit untuk dihitung sebelum menampilkan hasilnya kepada pengguna di Setelan.

Selain itu, algoritma internal untuk menghapus file data {i>cache<i} hanya dilihat perubahan waktu di semua aplikasi. Hal ini memungkinkan aplikasi berbahaya menurunkan pengalaman pengguna secara keseluruhan dengan menetapkan waktu yang telah diubah jauh di masa depan menjadi mengutamakan diri mereka sendiri dibandingkan aplikasi lain.

Untuk meningkatkan pengalaman ini, Android 8.0 menawarkan untuk memanfaatkan sistem file ext4 "kuota" dukungan untuk mengembalikan statistik penggunaan {i>disk<i} hampir secara instan. Kuota ini juga meningkatkan stabilitas sistem dengan mencegah satu aplikasi menggunakan lebih dari 90% kapasitas {i>disk<i} atau 50% inode.

Implementasi

Fitur kuota adalah bagian dari implementasi default installd. installd akan otomatis menggunakan fitur kuota saat diaktifkan di sistem file tertentu. Sistem melanjutkan secara otomatis dan transparan penghitungan manual, saat fitur kuota tidak diaktifkan atau didukung pada perangkat blok yang sedang diukur.

Untuk mengaktifkan dukungan kuota pada perangkat blok tertentu:

  1. Mengaktifkan CONFIG_QUOTA, CONFIG_QFMT_V2, dan Opsi kernel CONFIG_QUOTACTL.
  2. Menambahkan opsi quota ke partisi userdata di 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

Opsi fstab dapat diaktifkan atau dinonaktifkan dengan aman di aplikasi yang ada perangkat. Selama {i>booting<i} pertama setelah mengubah opsi fstab, fsmgr memaksa penerusan fsck untuk memperbarui semua data kuota yang dapat menyebabkan {i>booting<i} pertama yang memakan waktu sedikit lebih lama. Setelah booting tidak akan terpengaruh.

Dukungan kuota hanya diuji pada ext4 dan Linux 3.18 atau yang lebih tinggi. Jika mengaktifkan pada sistem file lain, atau pada versi {i> kernel<i} yang lebih lama, produsen perangkat bertanggung jawab untuk menguji dan memeriksa ketepatan statistik.

Tidak diperlukan dukungan hardware khusus.

Validasi

Ada uji CTS di bawah StorageHostTest, yang latihannya bersifat publik API untuk mengukur penggunaan disk. API ini diharapkan menampilkan nilai yang benar terlepas dari apakah dukungan kuota diaktifkan atau dinonaktifkan.

Proses Debug

Aplikasi pengujian dengan hati-hati mengalokasikan region kapasitas disk menggunakan bilangan prima unik untuk ukurannya. Saat melakukan debug pada pengujian ini, gunakan metode ini untuk menentukan penyebab yang berbeda. Misalnya, jika pengujian gagal dengan delta 11 MB, periksa metode Utils.useSpace() untuk melihat bahwa blob 11 MB tersebut disimpan di getExternalCacheDir().

Ada juga beberapa pengujian internal yang mungkin berguna untuk proses debug, tetapi mungkin memerlukan penonaktifan pemeriksaan keamanan agar lulus:

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