في الإصدارات السابقة من Android، اجتاز النظام جميع الملفات التي يملكها تطبيق معين لقياس استخدام القرص. قد يستغرق هذا القياس اليدوي بضع دقائق. لحاسوبها قبل عرض النتائج للمستخدمين في "الإعدادات".
بالإضافة إلى ذلك، نظرت الخوارزمية الداخلية لمسح ملفات البيانات المخزنة مؤقتًا فقط في تعديل الوقت في جميع التطبيقات. وقد سمح ذلك للتطبيقات الضارة بخفض مستوى تجربة المستخدم الإجمالية من خلال تعيين أوقات معدلة بعيدة في المستقبل على قيم غير عادلة لتفضيلهم على التطبيقات الأخرى.
لتحسين هذه التجارب، يعرض Android 8.0 الاستفادة من نظام ملفات ext4 "النسبة" إعادة إحصاءات استخدام القرص على الفور. هذه الحصة تعمل أيضًا على تحسين ثبات النظام من خلال منع أي تطبيق فردي من استخدام أكثر من 90% من مساحة القرص أو 50% من مؤشرات الفهرسة.
التنفيذ
تُعدّ ميزة الحصة جزءًا من التنفيذ التلقائي لـ installd
.
يستخدم installd
ميزة الحصة تلقائيًا عند تفعيلها على
نظام ملفات معين. يستأنف النظام تلقائيًا وبشفافية
الحساب اليدوي عندما لا تكون ميزة الحصة مُفعَّلة أو متاحة على
الجهاز الذي يتم قياسه.
لتفعيل إتاحة الحصة على جهاز معيّن:
- تفعيل
CONFIG_QUOTA
وCONFIG_QFMT_V2
خيارات النواةCONFIG_QUOTACTL
- إضافة الخيار
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 والإصدار 3.18 من Linux أو الإصدارات الأحدث. في حال التفعيل في أنظمة الملفات الأخرى، أو في إصدارات النواة القديمة، فإن الشركات المصنعة للأجهزة المسئول عن الاختبار والتدقيق في صحة الإحصائيات.
ولا يلزم دعم خاص للأجهزة.
التحقُّق
هناك اختبارات CTS بموجب StorageHostTest
، وهي تمارس بشكل علني
واجهات برمجة التطبيقات لقياس استخدام القرص. من المتوقّع أن تعرض واجهات برمجة التطبيقات هذه قيمًا صحيحة.
بصرف النظر عن تفعيل دعم الحصة أو إيقافه.
تصحيح الأخطاء
يخصّص التطبيق الاختباري مناطق مساحة القرص باستخدام أرقام أولية فريدة.
حسب الحجم. عند تصحيح أخطاء هذه الاختبارات، استخدم هذا لتحديد سبب
والتباينات. على سبيل المثال، إذا فشل الاختبار مع دلتا 11 ميغابايت، فافحص
Utils.useSpace()
لمعرفة أنه تم تخزين الكائن الثنائي الكبير (blob) الذي يبلغ 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