ডিভাইসের আপডেটযোগ্যতার জন্য super পার্টিশনের আকার সঠিকভাবে নির্ধারণ করা গুরুত্বপূর্ণ। এর আকারের ওপর সরাসরি নির্ভর করে একটি ডিভাইস কতগুলো আপডেট নিতে পারবে এবং কতজন ব্যবহারকারী সফলভাবে সেই আপডেটগুলো গ্রহণ করতে পারবে।
এখানে কয়েকটি গুরুত্বপূর্ণ বিষয় বিবেচনা করতে হবে। প্রথমটি হলো ফ্যাক্টরি সাইজ , যা হলো ডিভাইসটি প্রথমবার ফ্ল্যাশ করার সময় সমস্ত ডাইনামিক পার্টিশনের আকার। দ্বিতীয়টি হলো গ্রোথ রেট , যা হলো ডিভাইসটির সম্পূর্ণ আপডেটেবল জীবনকালে ওএস-এর আকারের শতকরা বৃদ্ধি।
এছাড়াও, ভার্চুয়াল এ/বি ডিভাইসগুলো আপডেটের সময় /data তে জায়গা ব্যবহার করতে পারে, এবং super আকার নির্ধারণ করার সময় এটি অবশ্যই বিবেচনা করতে হবে। যদি /data তে খুব বেশি জায়গার প্রয়োজন হয়, তাহলে কিছু ব্যবহারকারী আপডেটটি নিতে অক্ষম (বা অনিচ্ছুক) হন। তবে, যদি জানা থাকে যে বেশিরভাগ ব্যবহারকারীর কাছে একটি নির্দিষ্ট শতাংশ জায়গা খালি আছে, তাহলে ডিভাইসগুলো super থেকে সেই জায়গাটি স্বাচ্ছন্দ্যে বাদ দিতে পারে। অথবা, ডিভাইসগুলো super যথেষ্ট বড় করে দিয়ে এটা নিশ্চিত করতে পারে যে /data কখনোই প্রয়োজন হবে না।
এই ভেরিয়েবলগুলোর উপর ভিত্তি করে super পার্টিশনের আকার নির্ধারণে সহায়তার জন্য নিচে কয়েকটি মডেল দেওয়া হলো।
/ডেটার উপর নির্ভর করুন
ভার্চুয়াল এ/বি /data এর আকার বাড়ানোর জন্য super সংকুচিত করতে উৎসাহিত করে। একটি আপডেটের সময় সেই জায়গার কিছুটা প্রয়োজন হয়। আপডেটযোগ্যতার উপর এর প্রভাব বোঝার জন্য, সময়ের সাথে সাথে কত শতাংশ ডিভাইসে সেই পরিমাণ জায়গা খালি থাকার সম্ভাবনা রয়েছে, তা জানা অপরিহার্য। এই সংখ্যাটি বের করা ডিভাইসের হার্ডওয়্যার এবং সেই ডিভাইসের ব্যবহারকারীর আচরণের উপর অনেকাংশে নির্ভরশীল। নীচের উদাহরণগুলিতে, এই সংখ্যাটিকে AllowedUserdataUse হিসাবে উল্লেখ করা হয়েছে।
সংকোচন ছাড়া
কম্প্রেশন ছাড়া, একটি সম্পূর্ণ OTA-এর জন্য OS-এর প্রায় সমান আকারের একটি স্ন্যাপশট প্রয়োজন হয়, তাই super আকার নির্ধারণ করার সময় এই বিষয়টি অবশ্যই বিবেচনায় রাখতে হবে।
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) Super = Max(FinalDessertUpdate, FinalDessertSize * 2 - AllowedUserdataUse)
উদাহরণস্বরূপ, একটি ভার্চুয়াল এ/বি ডিভাইসের কথা বিবেচনা করুন যার ফ্যাক্টরি সাইজ ৪ জিবি, ৫০% বৃদ্ধির প্রত্যাশা রয়েছে, এবং এই তথ্যও আছে যে প্রায় সকল ব্যবহারকারীর কাছে ১ জিবি খালি জায়গা আছে (অথবা তারা আপডেটের জন্য ১ জিবি পর্যন্ত জায়গা খালি করতে ইচ্ছুক)। এই ডিভাইসটির জন্য, super সাইজ এইভাবে নির্ধারণ করা যেতে পারে:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB Super = Max(6GB, 6GB * 2 - 1GB) = Max(6GB, 11GB)
সুতরাং, এই ডিভাইসটিতে একটি ১১ জিবি super পার্টিশন থাকা উচিত।
সংকোচনের সাথে
কম্প্রেশনের মাধ্যমে, একটি সম্পূর্ণ OTA-এর জন্য OS-এর আকারের প্রায় ৭০% একটি স্ন্যাপশট প্রয়োজন হয়:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) FinalOTASnapshotSize = FinalDessertSize * 0.7 Super = Max(FinalDessertUpdate, FinalDessertSize + FinalOTASnapshotSize - AllowedUserdataUse)
উদাহরণস্বরূপ, ভার্চুয়াল এ/বি কম্প্রেশন দিয়ে কনফিগার করা একটি ডিভাইসের কথা বিবেচনা করুন, যার ফ্যাক্টরি সাইজ ৪ জিবি, ৫০% বৃদ্ধির প্রত্যাশা রয়েছে এবং এই তথ্যও আছে যে প্রায় সকল ব্যবহারকারীর কাছে ১ জিবি খালি জায়গা আছে (অথবা তারা আপডেটের জন্য ১ জিবি পর্যন্ত জায়গা খালি করতে ইচ্ছুক)। এই ডিভাইসটির জন্য, 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
সুতরাং, এই ডিভাইসটিতে একটি ৯.২ জিবি super পার্টিশন থাকা উচিত।
/data এর উপর নির্ভর না করে
আপনি যদি এমন OTA চান যার জন্য /data তে স্ন্যাপশট স্পেসের প্রয়োজন হবে না, তাহলে super সাইজ নির্ধারণ করা খুবই সহজ।
সংকোচন ছাড়া
কম্প্রেশন ছাড়া ভার্চুয়াল এ/বি ডিভাইস অথবা সাধারণ এ/বি ডিভাইসের ক্ষেত্রে:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) Super = FinalDessertSize * 2
উদাহরণস্বরূপ, ৪ জিবি ফ্যাক্টরি সাইজ এবং ৫০% প্রত্যাশিত বৃদ্ধি সহ একটি ভার্চুয়াল এ/বি ডিভাইসের কথা বিবেচনা করুন। এই ডিভাইসটি যাতে OTA স্ন্যাপশটের জন্য কখনও /data ব্যবহার না করে, তা নিশ্চিত করতে এর হিসাবটি হবে নিম্নরূপ:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB Super = FinalDessertSize * 2 = 12GB
সুতরাং, এই ডিভাইসটিতে একটি ১২ জিবি super পার্টিশন থাকা উচিত।
সংকোচনের সাথে
কম্প্রেশন সহ একটি ভার্চুয়াল এ/বি ডিভাইসের জন্য:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) FinalOTASnapshotSize = FinalDessertSize * 0.7 Super = FinalDessertSize + FinalOTASnapshotSize
উদাহরণস্বরূপ, ৪ জিবি ফ্যাক্টরি সাইজ এবং ৫০% প্রত্যাশিত বৃদ্ধি সহ একটি ভার্চুয়াল এ/বি কম্প্রেশন ডিভাইসের কথা বিবেচনা করুন। এই ডিভাইসটি যাতে OTA স্ন্যাপশটের জন্য কখনও /data ব্যবহার না করে, তা নিশ্চিত করতে এর হিসাবটি হবে নিম্নরূপ:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB FinalOTASnapshotSize = 6GB * 0.7 = 4.2GB Super = 6GB + 4.2GB = 10.2GB
সুতরাং, এই ডিভাইসটিতে একটি ১০.২ জিবি super পার্টিশন থাকা উচিত।
সতর্কতা
এটা লক্ষ্য করা যেতে পারে যে, যদি ফ্যাক্টরি সাইজ ৪ জিবি এবং ফাইনাল আপডেট ৫ জিবি হয়, তাহলে super এর জন্য ১০ জিবির পরিবর্তে ৯ জিবি প্রয়োজন। তবে, যদি প্রথম আপডেট এবং ফাইনাল আপডেট উভয়ই ৫ জিবি হয়, তাহলে ফাইনাল আপডেটের জন্য super -এ জায়গা অপর্যাপ্ত হতে পারে। উপরের সূত্রগুলো ধরে নেয় যে পার্টিশনের আকার যেকোনো সময় বাড়তে পারে। ফাইনাল আপডেট প্রয়োগ করার জন্য প্রয়োজনীয় জায়গা, প্রথম আপডেট প্রয়োগ করার জন্য প্রয়োজনীয় জায়গার সমান হতে পারে।
মনে রাখবেন যে কম্প্রেশন রেশিও একটি আনুমানিক হিসাব। একটি OS ইমেজ তার বিষয়বস্তুর উপর নির্ভর করে আরও ভালোভাবে বা খারাপভাবে কম্প্রেস হতে পারে। EROFS-এর মতো কোনো কম্প্রেসড ফাইল সিস্টেম ব্যবহার করলে, Virtual A/B থেকে পাওয়া অতিরিক্ত কম্প্রেশনের সুফল ক্রমশ কমে আসে। এক্ষেত্রে, নির্দেশিকা হিসেবে আনকম্প্রেসড ফর্মুলাগুলোর মধ্যে একটি ব্যবহার করাই শ্রেয়।
আকার গণনা করুন
পূর্ববর্তী উদাহরণগুলিতে FactorySize এর মান খুঁজে বের করতে, সমস্ত ডাইনামিক পার্টিশনের সাইজগুলো একসাথে যোগ করুন। AOSP ডাইনামিক পার্টিশন ইমেজগুলো হলো:
-
system.img -
vendor.img -
product.img -
system_ext.img -
vendor_dlkm.img -
system_dlkm.img
আনস্পার্সড ইমেজের উপর ভিত্তি করে সাইজ গণনা করা নিশ্চিত করুন। অ্যান্ড্রয়েড ১২ বা তার নিচের সংস্করণ বিল্ড করার সময়, ইমেজগুলো ডিফল্টভাবে স্পার্সড থাকে এবং simg2img ব্যবহার করে সেগুলোকে আনস্পার্স করা যায়।
একটি OTA প্যাকেজ থেকেও পার্টিশনের আকার গণনা করা সম্ভব। এটি করলে প্রতিটি পার্টিশনের জন্য ভার্চুয়াল A/B স্ন্যাপশটের আকারও অনুমান করা যায়:
python3 system/update_engine/scripts/payload_info.py path/to/ota-package.zip
অথবা, আপনি ওটিএ অ্যানালাইসিস টুল ব্যবহার করতে পারেন। এই টুলটি কোনো ফাইল আপলোড করে না এবং স্থানীয়ভাবে ওটিএ প্যাকেজগুলো বিশ্লেষণ করে।
ExpectedGrowth এর মান বের করতে, পূর্বে প্রকাশিত একটি ডিভাইস ব্যবহার করুন। প্রবৃদ্ধি গণনা করার জন্য সবচেয়ে পুরোনো এবং সবচেয়ে সাম্প্রতিক super ইমেজটি ব্যবহার করুন।