إحصاءات مساحة تخزين أسرع

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

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

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

التنفيذ

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

لتفعيل إتاحة الحصة على جهاز معيّن:

  1. تفعيل 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 والإصدار 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