Statistik Penyimpanan Lebih Cepat

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

Selain itu, algoritme internal untuk menghapus file data cache hanya melihat waktu yang dimodifikasi di semua aplikasi. Ini memungkinkan aplikasi jahat untuk menurunkan pengalaman pengguna secara keseluruhan dengan menetapkan waktu yang dimodifikasi jauh di masa depan untuk secara tidak adil menguntungkan diri mereka sendiri daripada aplikasi lain.

Untuk meningkatkan pengalaman ini, Android 8.0 menawarkan untuk memanfaatkan dukungan "kuota" sistem file ext4 untuk mengembalikan 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.

Penerapan

Fitur kuota merupakan bagian dari implementasi default installd . installd secara otomatis menggunakan fitur kuota ketika diaktifkan pada sistem file tertentu. Sistem secara otomatis dan transparan melanjutkan perhitungan manual ketika fitur kuota tidak diaktifkan atau didukung pada perangkat blok yang diukur.

Untuk mengaktifkan dukungan kuota pada perangkat blok tertentu:

  1. Aktifkan opsi kernel CONFIG_QUOTA , CONFIG_QFMT_V2 , dan CONFIG_QUOTACTL .
  2. Tambahkan opsi quota ke partisi data pengguna Anda di file fstab Anda:
    /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 dengan aman diaktifkan atau dinonaktifkan pada perangkat yang ada. Selama boot pertama setelah mengubah opsi fstab , fsmgr memaksa pass fsck untuk memperbarui semua struktur data kuota, yang dapat menyebabkan boot pertama memakan waktu sedikit lebih lama. Sepatu bot berikutnya tidak akan terpengaruh.

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

Tidak diperlukan dukungan perangkat keras khusus.

Validasi

Ada tes CTS di bawah StorageHostTest , yang menggunakan API publik untuk mengukur penggunaan disk. API ini diharapkan mengembalikan nilai yang benar terlepas dari dukungan kuota yang diaktifkan atau dinonaktifkan.

Debug

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

Ada juga beberapa tes internal yang mungkin berguna untuk debugging, tetapi tes tersebut mungkin memerlukan penonaktifan pemeriksaan keamanan untuk 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