एंड्रॉइड के पुराने संस्करणों में, सिस्टम डिस्क उपयोग को मापने के लिए एक विशेष ऐप के स्वामित्व वाली सभी फ़ाइलों को ट्रेस करता था। सेटिंग्स में उपयोगकर्ताओं को परिणाम प्रदर्शित करने से पहले इस मैन्युअल माप की गणना करने में कुछ मिनट लग सकते हैं।
इसके अलावा, कैश्ड डेटा फ़ाइलों को साफ़ करने के लिए आंतरिक एल्गोरिदम सभी ऐप्स में केवल संशोधित समय को देखता है। इसने दुर्भावनापूर्ण ऐप्स को भविष्य में संशोधित समय निर्धारित करके समग्र उपयोगकर्ता अनुभव को ख़राब करने की अनुमति दी ताकि वे अन्य ऐप्स पर गलत तरीके से अपना पक्ष रख सकें।
इन अनुभवों को बेहतर बनाने के लिए, एंड्रॉइड 8.0 डिस्क उपयोग के आंकड़ों को लगभग तुरंत वापस करने के लिए ext4 फ़ाइल सिस्टम के "कोटा" समर्थन का लाभ उठाने की पेशकश करता है। यह कोटा सुविधा किसी भी एक ऐप को 90% से अधिक डिस्क स्थान या 50% इनोड का उपयोग करने से रोककर सिस्टम स्थिरता में सुधार करती है।
कार्यान्वयन
कोटा सुविधा installd
के डिफ़ॉल्ट कार्यान्वयन का हिस्सा है। किसी विशेष फ़ाइल सिस्टम पर सक्षम होने पर installd
स्वचालित रूप से कोटा सुविधा का उपयोग करता है। जब मापे जा रहे ब्लॉक डिवाइस पर कोटा सुविधा सक्षम या समर्थित नहीं होती है तो सिस्टम स्वचालित रूप से और पारदर्शी रूप से मैन्युअल गणना फिर से शुरू कर देता है।
किसी विशेष ब्लॉक डिवाइस पर कोटा समर्थन सक्षम करने के लिए:
-
CONFIG_QUOTA
,CONFIG_QFMT_V2
औरCONFIG_QUOTACTL
कर्नेल विकल्प सक्षम करें। - अपनी fstab फ़ाइल में अपने उपयोगकर्ताडेटा विभाजन में
quota
विकल्प जोड़ें:/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 या उच्चतर पर किया गया है। यदि अन्य फाइल सिस्टम, या पुराने कर्नेल संस्करणों पर सक्षम किया जा रहा है, तो डिवाइस निर्माता आंकड़ों की शुद्धता के परीक्षण और जांच के लिए जिम्मेदार हैं।
किसी विशेष हार्डवेयर समर्थन की आवश्यकता नहीं है.
मान्यकरण
StorageHostTest
के अंतर्गत सीटीएस परीक्षण हैं, जो डिस्क उपयोग को मापने के लिए सार्वजनिक एपीआई का उपयोग करते हैं। कोटा समर्थन सक्षम या अक्षम होने की परवाह किए बिना इन एपीआई से सही मान लौटाने की उम्मीद की जाती है।
डिबगिंग
परीक्षण ऐप आकार के लिए अद्वितीय अभाज्य संख्याओं का उपयोग करके डिस्क स्थान क्षेत्रों को सावधानीपूर्वक आवंटित करता है। इन परीक्षणों को डीबग करते समय, किसी भी विसंगति का कारण निर्धारित करने के लिए इसका उपयोग करें। उदाहरण के लिए, यदि कोई परीक्षण 11MB के डेल्टा के साथ विफल हो जाता है, तो यह देखने के लिए Utils.useSpace()
विधि की जांच करें कि 11MB ब्लॉब 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