Statistik penyimpanan lebih cepat

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

Selain itu, algoritma internal untuk menghapus file data cache hanya melihat waktu modifikasi di semua aplikasi. Hal ini memungkinkan aplikasi jahat menurunkan pengalaman pengguna secara keseluruhan dengan menetapkan waktu modifikasi jauh di masa depan untuk secara tidak adil menguntungkan aplikasi tersebut dibandingkan 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 aplikasi apa pun menggunakan lebih dari 90% ruang disk atau 50% inode.

Penerapan

Fitur kuota adalah bagian dari implementasi default installd . installd secara otomatis menggunakan fitur kuota ketika diaktifkan pada sistem file tertentu. Sistem secara otomatis dan transparan melanjutkan penghitungan 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 diaktifkan atau dinonaktifkan dengan aman di perangkat yang ada. Selama boot pertama setelah mengubah opsi fstab , fsmgr memaksa pass fsck untuk memperbarui semua struktur data kuota, yang mungkin 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 pengujian CTS di bawah StorageHostTest , yang menggunakan API publik untuk mengukur penggunaan disk. API ini diharapkan mengembalikan nilai yang benar terlepas dari apakah dukungan kuota diaktifkan atau dinonaktifkan.

Men-debug

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

Ada juga beberapa pengujian internal yang mungkin berguna untuk proses debug, namun mungkin memerlukan penonaktifan pemeriksaan keamanan agar dapat 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