Statistik penyimpanan yang lebih cepat

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

Selain itu, algoritma internal untuk menghapus file data dalam cache hanya melihat waktu yang diubah di semua aplikasi. Hal ini memungkinkan aplikasi berbahaya menurunkan pengalaman pengguna secara keseluruhan dengan menetapkan waktu yang diubah jauh di masa mendatang untuk memberi keuntungan yang tidak adil bagi aplikasi tersebut dibandingkan aplikasi lain.

Untuk meningkatkan pengalaman ini, Android 8.0 menawarkan untuk memanfaatkan dukungan "kuota" sistem file ext4 untuk menampilkan statistik penggunaan disk hampir seketika. Fitur kuota ini juga meningkatkan stabilitas sistem dengan mencegah satu aplikasi menggunakan lebih dari 90% ruang disk atau 50% inode.

Implementasi

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

Untuk mengaktifkan dukungan kuota di perangkat blok tertentu:

  1. Aktifkan opsi kernel CONFIG_QUOTA, CONFIG_QFMT_V2, dan CONFIG_QUOTACTL.
  2. Tambahkan opsi quota ke partisi userdata dalam 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

Opsi fstab dapat diaktifkan atau dinonaktifkan dengan aman di perangkat yang ada. Selama booting pertama setelah mengubah opsi fstab, fsmgr memaksa kartu fsck untuk mengupdate semua struktur data kuota, yang dapat menyebabkan booting pertama tersebut memerlukan waktu sedikit lebih lama. Proses booting berikutnya tidak akan terpengaruh.

Dukungan kuota hanya telah diuji di ext4 dan Linux 3.18 atau yang lebih baru. Jika mengaktifkan pada sistem file lain, atau pada versi kernel yang lebih lama, produsen perangkat bertanggung jawab untuk menguji dan memeriksa kebenaran statistik.

Tidak diperlukan dukungan hardware khusus.

Validasi

Ada pengujian CTS di bagian StorageHostTest, yang menggunakan API publik untuk mengukur penggunaan disk. API ini diharapkan menampilkan nilai yang benar, terlepas dari apakah dukungan kuota diaktifkan atau dinonaktifkan.

Proses Debug

Aplikasi pengujian mengalokasikan region ruang disk dengan cermat menggunakan bilangan prima unik untuk ukurannya. Saat men-debug pengujian ini, gunakan ini untuk menentukan penyebab perbedaan. Misalnya, jika pengujian gagal dengan delta 11 MB, periksa metode Utils.useSpace() untuk melihat bahwa blob 11 MB disimpan di getExternalCacheDir().

Ada juga beberapa pengujian internal yang mungkin berguna untuk proses debug, tetapi pengujian tersebut 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