डिवाइस अपडेटेबिलिटी के लिए super
पार्टीशन को सही ढंग से आकार देना महत्वपूर्ण है। आकार सीधे तौर पर प्रभावित करता है कि कोई डिवाइस कितने अपडेट ले सकता है और कितने उपयोगकर्ता उन अपडेट को सफलतापूर्वक ले सकते हैं।
विचार करने के लिए कुछ महत्वपूर्ण चर हैं। पहला फ़ैक्टरी आकार है, जो डिवाइस को पहली बार फ्लैश करने पर सभी गतिशील विभाजनों का आकार होता है। दूसरा है विकास दर , जो डिवाइस के संपूर्ण अद्यतन करने योग्य जीवन के दौरान ओएस आकार में वृद्धि का प्रतिशत है।
इसके अतिरिक्त, वर्चुअल ए/बी डिवाइस अपडेट के दौरान /data
पर स्थान का उपयोग कर सकते हैं, और super
आकार देते समय इस पर विचार किया जाना चाहिए। यदि /data
पर बहुत अधिक स्थान की आवश्यकता है, तो कुछ उपयोगकर्ता अपडेट लेने में असमर्थ (या अनिच्छुक) हैं। हालाँकि, यदि यह ज्ञात है कि अधिकांश उपयोगकर्ताओं के पास कुछ प्रतिशत स्थान खाली है, तो डिवाइस आराम से उस स्थान को super
से घटा सकते हैं। या, डिवाइस यह गारंटी दे सकते हैं कि /data
कभी आवश्यकता नहीं है, बस इसे पर्याप्त super
से बड़ा बनाकर।
इन चरों के आधार पर super
विभाजन आकार को निर्देशित करने में सहायता के लिए नीचे कुछ मॉडल दिए गए हैं।
/डेटा पर भरोसा करना
वर्चुअल ए/बी / /data
के आकार को बढ़ाने की अनुमति देने के लिए सिकुड़ते super
प्रोत्साहित करता है। अद्यतन के दौरान उस स्थान में से कुछ की आवश्यकता होती है। अद्यतन योग्यता पर प्रभाव को समझने के लिए, यह जानना आवश्यक है कि समय के साथ कितने प्रतिशत उपकरणों में उतनी जगह खाली होने की संभावना है। इस संख्या का पता लगाना डिवाइस के हार्डवेयर और उस डिवाइस के उपयोगकर्ताओं के व्यवहार पर अत्यधिक निर्भर है। नीचे दिए गए उदाहरणों में, इस संख्या को AllowedUserdataUse
के रूप में संदर्भित किया गया है।
बिना संपीड़न के
संपीड़न के बिना, एक पूर्ण ओटीए को लगभग ओएस के समान आकार के स्नैपशॉट की आवश्यकता होती है, इसलिए super
देते समय इसे ध्यान में रखा जाना चाहिए:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) Super = Max(FinalDessertUpdate, FinalDessertSize * 2 - AllowedUserdataUse)
उदाहरण के लिए, 4 जीबी के फ़ैक्टरी आकार वाले वर्चुअल ए/बी डिवाइस पर विचार करें, 50% की अपेक्षित वृद्धि, और ज्ञान कि लगभग सभी उपयोगकर्ताओं के पास 1 जीबी मुफ़्त है (या अपडेट के लिए 1 जीबी तक जगह खाली करने के इच्छुक हैं) . इस उपकरण के लिए, super
आकार इस प्रकार हो सकता है:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB Super = Max(6GB, 6GB * 2 - 1GB) = Max(6GB, 11GB)
इस प्रकार, इस डिवाइस में 11 जीबी super
पार्टीशन होना चाहिए।
संपीड़न के साथ
संपीड़न के साथ, एक पूर्ण ओटीए को ओएस के लगभग 70% आकार के स्नैपशॉट की आवश्यकता होती है:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) FinalOTASnapshotSize = FinalDessertSize * 0.7 Super = Max(FinalDessertUpdate, FinalDessertSize + FinalOTASnapshotSize - AllowedUserdataUse)
उदाहरण के लिए, वर्चुअल ए/बी कंप्रेशन के साथ कॉन्फ़िगर किए गए डिवाइस पर विचार करें, जिसका फ़ैक्टरी आकार 4 जीबी है, 50% की अपेक्षित वृद्धि है, और ज्ञान है कि लगभग सभी उपयोगकर्ताओं के पास 1 जीबी मुफ्त है (या 1 जीबी तक जगह खाली करने के इच्छुक हैं) एक अपडॆट)। इस उपकरण के लिए, super
आकार इस प्रकार हो सकता है:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB FinalOTASnapshotSize = 6GB * 0.7 = 4.2GB Super = Max(6GB, 6GB + 4.2GB - 1GB) = Max(6GB, 9.2GB) = 9.2GB
इस प्रकार, इस डिवाइस में 9.2 जीबी super
पार्टीशन होना चाहिए।
/डेटा पर भरोसा किए बिना
यदि आप ऐसे ओटीए चाहते हैं जिनके लिए /data
पर स्नैपशॉट स्थान की आवश्यकता नहीं है, तो super
आकार देना सीधा है।
बिना संपीड़न के
बिना कंप्रेशन वाले वर्चुअल ए/बी डिवाइस या सामान्य ए/बी डिवाइस के लिए:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) Super = FinalDessertSize * 2
उदाहरण के लिए, 4 जीबी के फ़ैक्टरी आकार और 50% की अपेक्षित वृद्धि वाले वर्चुअल ए/बी डिवाइस पर विचार करें। यह सुनिश्चित करने के लिए कि यह डिवाइस कभी भी ओटीए स्नैपशॉट के लिए /data
उपयोग नहीं करता है, इसकी गणना इस प्रकार होगी:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB Super = FinalDessertSize * 2 = 12GB
इस प्रकार, इस डिवाइस में 12 जीबी super
पार्टीशन होना चाहिए।
संपीड़न के साथ
संपीड़न वाले वर्चुअल ए/बी डिवाइस के लिए:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) FinalOTASnapshotSize = FinalDessertSize * 0.7 Super = FinalDessertSize + FinalOTASnapshotSize
उदाहरण के लिए, 4 जीबी के फ़ैक्टरी आकार और 50% की अपेक्षित वृद्धि के साथ एक वर्चुअल ए/बी कम्प्रेशन डिवाइस पर विचार करें। यह सुनिश्चित करने के लिए कि यह डिवाइस कभी भी ओटीए स्नैपशॉट के लिए /data
उपयोग नहीं करता है, इसकी गणना इस प्रकार होगी:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB FinalOTASnapshotSize = 6GB * 0.7 = 4.2GB Super = 6GB + 4.2GB = 10.2GB
इस प्रकार, इस डिवाइस में 10.2 जीबी super
पार्टीशन होना चाहिए।
चेतावनियां
यह देखना आकर्षक हो सकता है कि यदि फ़ैक्टरी का आकार 4 जीबी है, और अंतिम अपडेट 5 जीबी है, तो super
को 10 जीबी के बजाय 9 जीबी होना चाहिए। हालाँकि, यदि पहला अपडेट और अंतिम अपडेट दोनों 5 जीबी हैं, तो अंतिम अपडेट के लिए super
में जगह अपर्याप्त हो सकती है। उपरोक्त सूत्र मानते हैं कि विभाजन वृद्धि किसी भी समय हो सकती है। अंतिम अद्यतन को लागू करने के लिए आवश्यक स्थान वही हो सकता है जो पहले अद्यतन को लागू करने के लिए आवश्यक है।
ध्यान दें कि संपीड़न अनुपात एक अनुमान है। एक OS छवि उसकी सामग्री के आधार पर बेहतर या ख़राब संपीड़ित हो सकती है। यदि EROFS जैसे संपीड़ित फ़ाइल सिस्टम का उपयोग किया जाता है, तो वर्चुअल A/B से अतिरिक्त संपीड़न का रिटर्न कम हो जाता है। इस मामले में दिशानिर्देश के रूप में असम्पीडित सूत्रों में से किसी एक का उपयोग करना बेहतर है।
मापने
उपरोक्त उदाहरणों में FinalDessertSize
का मान खोजने के लिए, सभी गतिशील विभाजनों के आकारों को एक साथ जोड़ें। AOSP गतिशील विभाजन छवियाँ हैं:
-
system.img
-
vendor.img
-
product.img
-
system_ext.img
-
vendor_dlkm.img
-
system_dlkm.img
बिना विरल छवियों के आधार पर आकार की गणना करना सुनिश्चित करें। एंड्रॉइड 12 या उससे पहले का संस्करण बनाते समय, छवियों को डिफ़ॉल्ट रूप से स्पार्स किया जाता है, और simg2img
के साथ अनस्पार्स किया जा सकता है।
ओटीए पैकेज से विभाजन आकार की गणना करना भी संभव है। ऐसा करने से प्रत्येक विभाजन के लिए वर्चुअल ए/बी स्नैपशॉट आकार का भी अनुमान लगाया जाता है:
python3 system/update_engine/scripts/payload_info.py path/to/ota-package.zip
या, आप ओटीए विश्लेषण उपकरण का उपयोग कर सकते हैं। यह टूल कोई फ़ाइल अपलोड नहीं करता है और स्थानीय स्तर पर OTA पैकेजों का विश्लेषण करता है।
ExpectedGrowth
का मान जानने के लिए, पहले जारी किए गए डिवाइस का उपयोग करें। वृद्धि की गणना करने के लिए सबसे प्रारंभिक और नवीनतम super
छवि का उपयोग करें।