สถิติพื้นที่เก็บข้อมูลที่เร็วขึ้น

ใน 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 และ Linux 3.18 ขึ้นไปเท่านั้น หากเปิดใช้ ในระบบไฟล์อื่นๆ หรือในเคอร์เนลเวอร์ชันเก่า ผู้ผลิตอุปกรณ์ ซึ่งมีหน้าที่ทดสอบและตรวจสอบความถูกต้องทางสถิติ

โดยไม่จำเป็นต้องมีการสนับสนุนด้านฮาร์ดแวร์เป็นพิเศษ

การตรวจสอบความถูกต้อง

มีการทดสอบ CTS ภายใต้ StorageHostTest ซึ่งเป็นการออกกำลังกายแบบสาธารณะ API สำหรับวัดการใช้งานดิสก์ API เหล่านี้ควรจะแสดงค่าที่ถูกต้อง ไม่ว่าจะเปิดใช้หรือปิดใช้การสนับสนุนโควต้าไว้หรือไม่ก็ตาม

การแก้ไขข้อบกพร่อง

แอปทดสอบจัดสรรพื้นที่ดิสก์อย่างรอบคอบโดยใช้จำนวนเฉพาะที่ไม่ซ้ำกัน สำหรับขนาด เมื่อแก้ไขข้อบกพร่องของการทดสอบนี้ ให้ใช้ค่านี้เพื่อหาสาเหตุของ ความคลาดเคลื่อน ตัวอย่างเช่น หากการทดสอบล้มเหลวโดยมีเดลต้าขนาด 11 MB ให้ตรวจสอบ Utils.useSpace() เพื่อดูว่ามีการจัดเก็บ BLOB ขนาด 11 MB ใน 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