Daha hızlı depolama istatistikleri

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:

  1. CONFIG_QUOTA , CONFIG_QFMT_V2 ve CONFIG_QUOTACTL çekirdek seçeneklerini etkinleştirin.
  2. 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