स्टोरेज के आंकड़े तेज़ी से देखना

Android के पुराने वर्शन में, डिस्क के इस्तेमाल को मेज़र करने के लिए सिस्टम, किसी खास ऐप्लिकेशन के मालिकाना हक वाली सभी फ़ाइलों को ट्रैवर्स करता था. मैन्युअल तरीके से किए गए इस मेज़रमेंट को कैलकुलेट करने में कुछ मिनट लग सकते हैं. इसके बाद ही, उपयोगकर्ताओं को सेटिंग में नतीजे दिखाए जा सकते हैं.

इसके अलावा, कैश मेमोरी में सेव डेटा फ़ाइलों को मिटाने के लिए, इंटरनल एल्गोरिदम सिर्फ़ सभी ऐप्लिकेशन में बदलाव किए जाने के समय को देखता है. इससे नुकसान पहुंचाने वाले ऐप्लिकेशन, आने वाले समय में बदले गए समय को सेट करके, अन्य ऐप्लिकेशन के मुकाबले अपने ऐप्लिकेशन को गलत तरीके से फ़ायदा पहुंचा सकते थे. इससे, उपयोगकर्ताओं को ऐप्लिकेशन इस्तेमाल करने का खराब अनुभव मिलता था.

इन सुविधाओं को बेहतर बनाने के लिए, Android 8.0 में ext4 फ़ाइल सिस्टम के "कोटा" की सुविधा का फ़ायदा उठाने का विकल्प दिया गया है. इससे, डिस्क के इस्तेमाल के आंकड़े तुरंत मिल सकते हैं. कोटा की इस सुविधा से, सिस्टम के काम करने के तरीके को भी बेहतर बनाया जा सकता है. इससे किसी भी ऐप्लिकेशन को डिस्क के 90% से ज़्यादा स्टोरेज या 50% इनोड का इस्तेमाल करने से रोका जा सकता है.

लागू करना

कोटा की सुविधा, installd को डिफ़ॉल्ट रूप से लागू करने का हिस्सा है. किसी फ़ाइल सिस्टम पर चालू होने पर, installd कोटा की सुविधा का अपने-आप इस्तेमाल करता है. अगर कोटा की सुविधा चालू नहीं है या जिस ब्लॉक डिवाइस का आकलन किया जा रहा है उस पर यह सुविधा काम नहीं करती, तो सिस्टम अपने-आप और साफ़ तौर पर मैन्युअल तरीके से हिसाब लगाना फिर से शुरू कर देता है.

ब्लॉक किए गए किसी डिवाइस पर कोटा की सुविधा चालू करने के लिए:

  1. CONFIG_QUOTA, CONFIG_QFMT_V2, और CONFIG_QUOTACTL के लिए उपलब्ध कर्नेल के विकल्प चालू करें.
  2. अपनी 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 में सीटीएस टेस्ट होते हैं, जो डिस्क के इस्तेमाल को मेज़र करने के लिए सार्वजनिक एपीआई का इस्तेमाल करते हैं. इन एपीआई से सही वैल्यू मिलनी चाहिए, भले ही कोटा की सुविधा चालू हो या बंद.

डीबग करना

जांच करने वाला ऐप्लिकेशन, साइज़ के लिए यूनीक प्राइम नंबर का इस्तेमाल करके, डिस्क स्टोरेज के क्षेत्रों को ध्यान से बांटता है. इन टेस्ट को डीबग करते समय, किसी भी तरह के अंतर की वजह का पता लगाने के लिए इसका इस्तेमाल करें. उदाहरण के लिए, अगर कोई टेस्ट 11 एमबी के डेल्टा के साथ फ़ेल होता है, तो Utils.useSpace() तरीके की जांच करके देखें कि 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