ใน 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 และ 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