Android'in önceki sürümlerinde sistem, disk kullanımını ölçmek için belirli bir uygulamanın sahip olduğu tüm dosyaları tarardı. Bu manuel ölçümün, sonuçların Ayarlar'da kullanıcılara görüntülenmesinden önce hesaplanması birkaç dakika sürebilir.
Ayrıca, önbelleğe alınmış veri dosyalarını temizlemeye yönelik dahili algoritma, tüm uygulamalarda yalnızca değiştirilen zamana baktı. Bu, kötü amaçlı uygulamaların, kendilerini diğer uygulamalara göre adil olmayan bir şekilde tercih edecek şekilde değiştirilmiş zamanları çok ileri bir tarihe ayarlayarak genel kullanıcı deneyimini kötüleştirmesine olanak tanıdı.
Bu deneyimleri geliştirmek için Android 8.0, disk kullanım istatistiklerini neredeyse anında döndürmek amacıyla ext4 dosya sisteminin "kota" desteğinden yararlanmayı teklif ediyor. Bu kota özelliği aynı zamanda herhangi bir uygulamanın disk alanının %90'ından veya inode'ların %50'sinden fazlasını kullanmasını engelleyerek sistem kararlılığını da artırır.
Uygulama
Kota özelliği, installd
öğesinin varsayılan uygulamasının bir parçasıdır. installd
belirli bir dosya sisteminde etkinleştirildiğinde kota özelliğini otomatik olarak kullanır. Ölçülen blok cihazda kota özelliği etkinleştirilmediğinde veya desteklenmediğinde sistem otomatik ve şeffaf bir şekilde manuel hesaplamaya devam eder.
Belirli bir blok cihazda kota desteğini etkinleştirmek için:
-
CONFIG_QUOTA
,CONFIG_QFMT_V2
veCONFIG_QUOTACTL
çekirdek seçeneklerini etkinleştirin. -
quota
seçeneğini fstab dosyanızdaki kullanıcı verileri bölümünüze ekleyin:/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
fstab
seçeneği mevcut cihazlarda güvenli bir şekilde etkinleştirilebilir veya devre dışı bırakılabilir. fstab
seçeneğini değiştirdikten sonraki ilk önyükleme sırasında fsmgr
tüm kota veri yapılarını güncellemek için bir fsck
geçişini zorlar; bu da ilk önyüklemenin biraz daha uzun sürmesine neden olabilir. Sonraki önyüklemeler etkilenmeyecektir.
Kota desteği yalnızca ext4 ve Linux 3.18 veya üzeri sürümlerde test edilmiştir. Diğer dosya sistemlerinde veya daha eski çekirdek sürümlerinde etkinleştiriliyorsa, istatistiklerin doğruluğunun test edilmesinden ve incelenmesinden cihaz üreticileri sorumludur.
Özel bir donanım desteğine gerek yoktur.
Doğrulama
StorageHostTest
altında disk kullanımını ölçmek için genel API'leri kullanan CTS testleri vardır. Bu API'lerin, kota desteğinin etkinleştirilip devre dışı bırakılmasına bakılmaksızın doğru değerleri döndürmesi beklenir.
Hata ayıklama
Test uygulaması, boyut için benzersiz asal sayıları kullanarak disk alanı bölgelerini dikkatli bir şekilde tahsis eder. Bu testlerde hata ayıklarken, tutarsızlıkların nedenini belirlemek için bunu kullanın. Örneğin, bir test 11 MB'lık bir deltayla başarısız olursa, 11 MB'lık blobun getExternalCacheDir()
içinde depolandığını görmek için Utils.useSpace()
yöntemini inceleyin.
Hata ayıklama için faydalı olabilecek bazı dahili testler de vardır ancak bunların başarılı olması için güvenlik kontrollerinin devre dışı bırakılması gerekebilir:
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