إحصائيات تخزين أسرع

في الإصدارات السابقة من Android، كان النظام يجتاز جميع الملفات المملوكة لتطبيق معين لقياس استخدام القرص. قد يستغرق هذا القياس اليدوي دقائق لحسابه قبل عرض النتائج للمستخدمين في الإعدادات.

بالإضافة إلى ذلك، نظرت الخوارزمية الداخلية لمسح ملفات البيانات المخزنة مؤقتًا فقط في الوقت المعدل عبر جميع التطبيقات. سمح هذا للتطبيقات الضارة بتدهور تجربة المستخدم الإجمالية من خلال تحديد أوقات معدلة في المستقبل البعيد لتفضيل نفسها بشكل غير عادل على التطبيقات الأخرى.

لتحسين هذه التجارب، يوفر Android 8.0 الاستفادة من دعم "الحصة" لنظام الملفات ext4 لعرض إحصائيات استخدام القرص على الفور تقريبًا. تعمل ميزة الحصة النسبية هذه أيضًا على تحسين استقرار النظام عن طريق منع أي تطبيق واحد من استخدام أكثر من 90% من مساحة القرص أو 50% من inodes.

تطبيق

تعد ميزة الحصة النسبية جزءًا من التنفيذ الافتراضي لـ installd . يستخدم installd تلقائيًا ميزة الحصة النسبية عند تمكينها على نظام ملفات معين. يستأنف النظام تلقائيًا وبشفافية الحساب اليدوي عندما لا يتم تمكين ميزة الحصة النسبية أو دعمها على جهاز الكتلة الذي يتم قياسه.

لتمكين دعم الحصص على جهاز حظر معين:

  1. قم بتمكين خيارات kernel CONFIG_QUOTA و CONFIG_QFMT_V2 و CONFIG_QUOTACTL .
  2. أضف خيار quota إلى قسم بيانات المستخدم الخاص بك في ملف 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

يمكن تمكين خيار fstab أو تعطيله بأمان على الأجهزة الموجودة. أثناء التمهيد الأول بعد تغيير خيار fstab ، يفرض fsmgr تمرير fsck لتحديث كافة بنيات بيانات الحصة، مما قد يتسبب في أن يستغرق التمهيد الأول وقتًا أطول قليلاً. لن تتأثر الأحذية اللاحقة.

تم اختبار دعم الحصص فقط على نظامي ext4 وLinux 3.18 أو أعلى. في حالة التمكين على أنظمة ملفات أخرى، أو على إصدارات kernel الأقدم، تكون الشركات المصنعة للأجهزة مسؤولة عن الاختبار والتحقق من صحة الإحصائيات.

ليس هناك حاجة إلى دعم خاص للأجهزة.

تصديق

توجد اختبارات CTS ضمن StorageHostTest ، والتي تستخدم واجهات برمجة التطبيقات العامة لقياس استخدام القرص. من المتوقع أن تقوم واجهات برمجة التطبيقات هذه بإرجاع القيم الصحيحة بغض النظر عن تمكين دعم الحصص أو تعطيله.

تصحيح الأخطاء

يقوم تطبيق الاختبار بتخصيص مناطق مساحة القرص بعناية باستخدام أرقام أولية فريدة للحجم. عند تصحيح أخطاء هذه الاختبارات، استخدم هذا لتحديد سبب أي اختلافات. على سبيل المثال، إذا فشل الاختبار مع دلتا تبلغ 11 ميجابايت، فافحص طريقة Utils.useSpace() لمعرفة أنه تم تخزين كائن ثنائي كبير الحجم بحجم 11 ميجابايت في getExternalCacheDir() .

هناك أيضًا بعض الاختبارات الداخلية التي قد تكون مفيدة لتصحيح الأخطاء، ولكنها قد تتطلب تعطيل عمليات التحقق من الأمان لاجتيازها:

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